There are two steps necessary to make sure that the browsers fetch the updated HTML pages (ex: home page).
Step 1
Uncheck ‘Set expires header’ at your site’s wp-admin/admin.php?page=w3tc_browsercache#html_xml
, for ‘HTML & XML’ files.
Whenever a browser sees an Expires
header, it (the browser) will fetch the next version of that particular HTML page only after it expires. The Expires
header specifies a date after which a resource (home page / HTML page) is invalid.
Step 2
In your site’s ‘Browser Cache’ at wp-admin/admin.php?page=w3tc_browsercache#html_xml
, for ‘HTML & XML’ files, the ‘Cache Control Policy’ should probably be ‘cache with max-age and validation (“max-age=EXPIRES_SECONDS, public, must-revalidate, proxy-revalidate”).
Like the ‘expires’ header, the max-age
header specifies how long a resource (home page / HTML page) is valid after it is downloaded.
When using this cache control policy, W3 Total Cache would additionally send two headers…
Last-Modified
headerETag
header
The use of ETag
is redundant (IMO), when Last-Modified
header is present. So, it is safe to remove ETag
header after it is generated by W3 Total Cache.
When the home page is not updated and when browsers tries to fetch the same page that is already in the browser cache, the W3 Total Cache sends 304 Not Modified
status code. If the home page is updated and if the browsers tries to fetch the same page that is already in the browser cache, W3 Total Cache sends the updated home page with the updated Last-Modified
and ETag
headers.
For more details on Expires
and max-age
headers, please check out… https://developers.google.com/speed/articles/caching
If you use Firefox, you may use Live HTTP Headers add-on to check how all the above headers work in real time.