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.