I am running PHP on Apache, and am confused about how to implement server-side caching, in order to make the site load faster.
What is the difference between the Expires
, Last-Modified
and ETag
headers, and which one should be used in what situation?
Expires
and Cache-Control
are "strong caching headers"
Last-Modified
and ETag
are "weak caching headers"
First the browser checks Expires/Cache-Control
to determine whether or not to make a request to the servers.
If it has to make a request, it will send Last-Modified/ETag
in the HTTP request. If the Etag
value of the document matches that, the server will send a 304 code instead of 200, and no content. The browser will load the contents from its cache.
I recommend using one of the strong caching headers, along with one of the weak caching headers.
See also: