
The table below shows the behavior when the must-revalidate directive is used. “Internet Explorer does not revalidate linked resources” That is, unless the appropriate Cache Control directives or Expires is used. So why does Google Chrome not send If-None-Match header?īecause just like any major web browsers, it will simply use the cached version of resources that returned a Last-Modified-Date.
FIREFOX DEVELOPER EDITION NO CACHE CODE
IMS/INM = a network request was done with the If-Modified-Since and If-None-Match headers, the server responded with HTTP status code 304 Not Modified, the web browser used the cached version The table below shows the behavior when both a Last-Modified and Etag header are used. “Why does Google Chrome not send If-None-Match header?” The server evaluates this and if the version is still current, it responds with a 304 Not Modified status. It will include both a "If-Modified-Since" and a "If-None-Match" request headers. If the web browser has a cached version with a Last Modified date and an Etag, Note that in Chrome you cannot fix caching issues with a normal reload.Ī hard reload does fix the problem, because it will request all resources without any "If-*" headers. Under normal working conditions, resources with a Last-Modified-Date always cached. IMS = a network request was done with the If-Modified-Since, the server responded with HTTP status code 304 Not Modified, the web browser used the cached version
.png)
The table below shows the behavior when Last-Modified header is used. “In Chrome you cannot fix caching issues with a normal reload.” This can create inconsistencies with an outdated linked resource in an updated web page.Īnd as mentioned before, Edge reloads the iframed resources when backing up. Note that Safari doesn't seem to know what it is doing when refreshing, resulting in excess calls for linked resources.Īlso note that IE11 does not revalidate linked resources. So none of the web browsers support multiple cached version of the same resource. Single INM and no matchers = Single INM is performed, followed by no matchers cache = no network call was done, the web browser used the cached version Single INM = a network request was done with a If-None-Match header with a single Etag, the server responded with HTTP status code 304 Not Modified, the web browser used the cached version The table below shows the behavior when Etags are used. “Safari doesn't seem to know what it is doing.” This can result in an inconsistent user experience. Note that Edge reloads the iframed resources, while using cached versions of the main resources. No matchers = a network request was done without cache specific headers, the server responded with HTTP status code 200 OK and returned the page / resource, the web browser used the returned dataĬache = no network call was done, the web browser used the cached version The table below shows the behavior when all caching related headers and meta tags are absent. “Microsoft Edge combines cached with uncached data!”

When you click the browser REFRESH button or use the keyboard or Javascript equivalent ("location.reload(false)"), you reload the page. When you click the browser BACK button or use the keyboard or Javascript equivalent ("()"), you navigate backwards. When you click on a link or bookmark to a page, you navigate forwards.

Typically the browser considers the entire URL up to an (optional) anchor as key. Each URL can have its own caching instructions. Web browsers use the URL as the cache key. The page can indicate a "Last-Modified" date to identify the page versionĪnd/or an "Etag" can be used with an arbitrary value to indicate the version.Ī page / resource can specify duration with "max-age", after which the page should be considered outdated.Īnd/or a specific date and time after the page / resource "Expires". The "no-store" instruction is used to tell web browsers (as well as internet proxies) not to cache the page / resource Note that internet proxies can only cache unencrypted data, so don't expect internet proxies to reduce the HTTPS traffic load on your serversįor web browsers, it should not matter whether the page / resource is public or private. This tells internet proxy servers whether they are allowed to cache ("public") or not cache ("private") the page / resource. When it comes to caching of web page and linked resouces, the following concepts are relevant:
