0

I am confused about cache headers. I am trying to make the browser cache my php/html pages because they are mostly static and they would not change for a month or so.

The urls look like: example.com/article-url and in background that is a php page like /article_url.php

I tried this in PHP:

$cache_seconds = 60*60*24*30;
header("Expires: ".gmdate('D, d M Y H:i:s \G\M\T', time()+$cache_seconds));
header("Cache-Control:public, max-age=".$cache_seconds); 

And in browser debug window I can see that indeed the page would expire next month:

Request URL: https://www.example.com/article-url
Request Method: GET
Status Code: 200 
Referrer Policy: no-referrer-when-downgrade
cache-control: public, max-age=2592000
content-encoding: gzip
content-length: 2352
content-type: text/html
date: Mon, 25 Nov 2019 14:23:40 GMT
expires: Wed, 25 Dec 2019 14:23:40 GMT
server: nginx
status: 200
vary: Accept-Encoding

But if I access that page again, I see it was generated again, I made it print the request timestamp in footer, and I can see the page is generated again on each page load. I was expecting browser to show exact same page from cache. What am I doing wrong ?

adrianTNT
  • 3,671
  • 5
  • 29
  • 35
  • Check this answer: https://stackoverflow.com/a/14842553/1460810 – kaczmen Nov 25 '19 at 14:59
  • From my tests, it is not a Chrome issue, it happens on Chrome or Mozilla too, I click to visit another page, then click the main page link, and the timestamp is new (page was re-generated). – adrianTNT Nov 25 '19 at 15:03

0 Answers0