I have the following code on my (all html webpages) :
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />
However, this is not clearing up caches and my code updates are not showing up. Is there another way to accomplish cache refresh?
It is better to use standard HTTP headers to control the caching from the server side, rather than using the http-equiv meta tags in your HTML. It allows for controlling proxy caching and other intermediaries, making it a lot more effective. The meta tags also don't help if you have external CSS and JS files. These will still be cached, which may explain why it isn't working correctly for you. You would have to append a randomly generated query string to your resource paths so that the browser appears to be loading a brand new resource every time.
The http-equiv values above are actually not in the HTML 5 specification, so are not valid. You can read more on using HTTP headers correctly in this useful caching guide.
Related
Is it possible to prevent caching files in Google Chrome programmatically?
I'd like to achieve the same effect as the option "disable cache" in chrome developer tools.
Main problem is that I'm using external script (it can't be changed by me) which loads another script - putting additional (randomly generated) parameters into source url for that script won't help.
So far I've tried to use meta tags:
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="cache-control" content="no-store" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1990 12:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />
After testing with different combinations of that tags I can only say that Google Chrome ignores that at all.
Is there any option to do that?
Thanks in advance.
You could try to use the HTTP response headers, instead of HTML meta tags: see Disabling browser caching for all browsers from ASP.NET.
If you're asking about disabling the caching of data in input elements, see How to prevent google chrome from caching my inputs, esp hidden ones when user click back?
When I regenerate the documentation with doxygen (1.8.7) and upload it to the webserver, I always get re-served the same pages as before the upload.
I've tried Ctrl-F5 (FireFox), I've also tried putting the following meta in src/header.html and recompiling doxygen:
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="-1">
I've also tried using the .htaccess file to control the cache. Unfortunately, I always get served stale html pages.
What am I missing to totally deactivate the cache for doxygen generated html?
I generally work with WordPress but just completed a project for a client that was a static HTML page consisting of 8 pages and ~2 images per page. Working with WordPress I would either use w3 total cachce, cloudflare, photon or a solution through wp engine.
I've been doing research and found a few solutions regarding meta tags, and manipulating an .htaccess file. The meta tag route, I read, is not a reasonable solution as it does not validate properly with HTML5. (this was specifically referring to setting up no cache, but same idea)
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />
Reference here: Using <meta> tags to turn off caching in all browsers?
I also read a little bit here:
http://www.metatags.info/meta_http_equiv_cache_control
Using something like this:
<meta http-equiv="Cache-control" content="public">
<meta http-equiv="Cache-control" content="private">
<meta http-equiv="Cache-control" content="no-cache">
<meta http-equiv="Cache-control" content="no-store">
But I'm not sure how they actually work and which is the correct one. Can someone point me in the right direction? Thanks!
Step away from the <meta> tags. Default caching headers sent by the web server are, in most cases, already appropriate for a static web site. Unless you have some unusual requirements - which does not appear to be the case here - there should be no need to modify them.
I have a page with another html page in iframe. In this iframe, i put this header tag
<META http-equiv="Pragma" content="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
<meta http-equiv="cache-control" content="no-cache" />
But chrome still cache it, when iframe content changed, hit f5 button but chrome still load cached version, not new version.
Please tell me how to pevent google chrome cache this iframe.
Set the correct expiry headers in the HTTP response from your server. They override anything you've put in meta tags.
This works in Chrome:
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-store" />
<meta http-equiv="expires" content="-1" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />
I found this in a Chromium bug.
https://bugs.chromium.org/p/chromium/issues/detail?id=28035
Meta tags can be ignored. Instead of them your server should set appropriate HTTP headers for cache control. You should also set the Expired header.
https://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Avoiding_caching
I found that Chrome may ignore those meta settings in the file in favor of the cache settings in http response header. I was able to fix this issue in IIS by adding this in my web.config
<system.webServer>
<staticContent>
<clientCache cacheControlMode="NoControl" />
Files still get cached but now I can explicitly exclude a file if I need to.
This question already has answers here:
How do we control web page caching, across all browsers?
(29 answers)
Closed 6 years ago.
I read that when you don't have access to the web server's headers you can turn off the cache using:
<meta http-equiv="Cache-Control" content="no-store" />
But I also read that this doesn't work in some versions of IE. Are there any set of <meta> tags that will turn off cache in all browsers?
For modern web browsers (After IE9)
See the Duplicate listed at the top of the page for correct information!
See answer here: How to control web page caching, across all browsers?
For IE9 and before
Do not blindly copy paste this!
The list is just examples of different techniques, it's not for direct
insertion. If copied, the second would overwrite the first and the
fourth would overwrite the third because of the http-equiv
declarations AND fail with the W3C validator. At most, one could have
one of each http-equiv declarations; pragma, cache-control and
expires. These are completely outdated when using modern up to date browsers.
After IE9 anyway. Chrome and Firefox specifically does not work with these as you would expect, if at all.
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />
Actually do not use these at all!
Caching headers are unreliable in meta elements; for one,
any web proxies between the site and the user will completely ignore
them. You should always use a real HTTP header for headers such as
Cache-Control and Pragma.
According to Independent Security Evaluators' great case study on the industry-wide misunderstanding of controlling caches, only Cache-Control: no-store is recognized by Chrome, Firefox, and IE. IE recognizes other controls, but Chrome and Firefox do not.
It doesn't work in IE5, but that's not a big issue.
However, cacheing headers are unreliable in meta elements; for one, any web proxies between the site and the user will completely ignore them. You should always use a real HTTP header for headers such as Cache-Control and Pragma.
pragma is your best bet:
<meta http-equiv="Pragma" content="no-cache">
I noticed some caching issues with service calls when repeating the same service call (long polling). Adding metadata didn't help. One solution is to pass a timestamp to ensure ie thinks it's a different http service request. That worked for me, so adding a server side scripting code snippet to automatically update this tag wouldn't hurt:
<meta http-equiv="expires" content="timestamp">
Try using
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">