Adding the Pragma header in http request is very helpful when troubleshooting Akamai caching. The Pragma header can be:”akamai-x-cache-on, akamai-x-cache-remote-on, akamai-x-check-cacheable, akamai-x-get-cache-key, akamai-x-get-extracted-values, akamai-x-get-nonces, akamai-x-get-ssl-client-session-id, akamai-x-get-true-cache-key, akamai-x-serial-no”
In the http response, the following value can tell us whether the URL is cached by Akamai, and how long it is cached.
X-Check-Cacheable: It shows whether the content is cached on Akamai ‘YES/NO’
X-Cache/ X-Cache_Remote: It shows the cache status
TCP_HIT: The object was fresh in cache and object from disk cache.
TCP_MISS: The object was not in cache, server fetched object from origin.
TCP_REFRESH_HIT: The object was stale in cache and we successfully refreshed with the origin on an If-Modified-Since request.
TCP_REFRESH_MISS: Object was stale in cache and refresh obtained a new object from origin in response to our IF-Modified-Since request.
TCP_REFRESH_FAIL_HIT: Object was stale in cache and we failed on refresh (couldn’t reach origin) so we served the stale object.
TCP_IMS_HIT: IF-Modified-Since request from client and object was fresh in cache and served.
TCP_NEGATIVE_HIT: Object previously returned a “not found” (or any other negatively cacheable response) and that cached response was a hit for this new request.
TCP_MEM_HIT: Object was on disk and in the memory cache. Server served it without hitting the disk.
TCP_DENIED: Denied access to the client for whatever reason
TCP_COOKIE_DENY: Denied access on cookie authentication (if centralized or decentralized authorization feature is being used in configuration)
X-Cache-Key: It is the cache key referred by Akamai. The caching length can be found here.
0s: 0 second cache meaning serve from cache but revalidate on every request, e.g. check origin but don’t re-download unless changed
000: Non-cacheable…a key code to recognise
1s: 1 second
1m: 1 minute
1h: 1 hour
1d: 1 day
For example, the following test tells me that http://www.sony.com is cached on Akamai for 5 minutes
curl -v -H “Pragma: akamai-x-cache-on, akamai-x-cache-remote-on, akamai-x-check-cacheable, akamai-x-get-cache-key” http://www.sony.com -o /dev/null
* Rebuilt URL to: http://www.sony.com/
* Hostname was NOT found in DNS cache
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 –:–:– –:–:– –:–:– 0* Trying 104.74.30.173…
* Connected to http://www.sony.com (104.74.30.173) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.37.0
> Host: http://www.sony.com
> Accept: */*
> Pragma: akamai-x-cache-on, akamai-x-cache-remote-on, akamai-x-check-cacheable, akamai-x-get-cache-key
>
< HTTP/1.1 200 OK
* Server Apache is not blacklisted
< Server: Apache
< ETag: “cc962ed505a54c8ec01bb8cfe81dad35:1431277376”
< Last-Modified: Sun, 10 May 2015 16:37:01 GMT
< Content-Type: text/html
< Cache-Control: max-age=300
< Date: Mon, 11 May 2015 02:35:05 GMT
< Transfer-Encoding: chunked
< X-Cache: TCP_MEM_HIT from a104-72-70-102.deploy.akamaitechnologies.com (AkamaiGHost/7.2.0-15182023) (-)
< X-Cache-Key: /L/9131/354500/5m/sgweu.download.akamai.com/200316/FolderC/production/
< Connection: keep-alive
< Connection: Transfer-Encoding
< Set-Cookie: geofilter_country=AU; expires=Tue, 10-May-2016 02:35:05 GMT
< X-Check-Cacheable: YES
<
{ [data not shown]
100 192k 0 192k 0 0 908k 0 –:–:– –:–:– –:–:– 905k
* Connection #0 to host http://www.sony.com left intact