Do browsers send different HTTP headers on page reload so that server side caches can be flushed?

No. The browser will send the same information on a refresh as if the user had just come to that page, with the same referrer information. Hence the problem of double-POSTing if someone refreshes the destination page for a form.

What you could do is have a refresh button on the page (as Google Ads used to have before they removed it), which you could use to send a relevant GET or POST variable to the server which would trigger the update you were looking for.

Alternatively, you could use a cookie to determine if the user had seen that page was the last page that user had seen as treat a second request for that page as a refresh.


Browsers do send additional headers, but behavior different. This info in link a bit outdated: stackoverflow question

Looks like Cache-control:no-cache is the best solution, to check for Ctrl+F5, but better to check not the only one header.

Just checked on Firefox Ubuntu, F5 gives nothing, but Ctrl+F5 request contain this

Pragma  no-cache
Cache-Control   no-cache

Checked Chromium - same behavior, same two headers.

This headers may pass any proxy in the middle, and come to end - site server, as I known.