Calculating the Rate of Client Cache Hits on Apache
Credit: Mark Nenadov
Problem
You need to monitor how often client requests are refused by your Apache web server because the client’s cache of the page is up to date.
Solution
When a browser queries a server for a page that the browser has in its cache, the browser lets the server know about the cached data, and the server returns an error code (rather than serving the page again) if the client’s cache is up to date. Here’s how to find the statistics for such occurrences in your server’s logs:
def ClientCachePercentage(logfile_pathname):
Contents = open(logfile_pathname, "r").xreadlines( )
TotalRequests = 0
CachedRequests = 0
for line in Contents:
TotalRequests += 1
if line.split(" ")[8] == "304": # if server returned "not modified"
CachedRequests += 1
return (100*CachedRequests)/TotalRequestsDiscussion
The percentage of requests to your Apache server that are met by the client’s own cache is an important factor in the perceived performance of your server. The code in this recipe helps you get this information from the server’s log. Typical use would be:
log_path = "/usr/local/nusphere/apache/logs/access_log"
print "Percentage of requests that are client-cached: " + str(
ClientCachePercentage(log_path)) + "%"The recipe reads the log file via the special method
xreadlines, introduced in Python
2.1, rather than via the more normal readlines.
readlines must read the whole file into memory, since it returns a list of all lines, making ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access