Normally for .js
and .css
file we will append a version during build like
xx.js?v=123
, and then after website deploy, we can get the new version of js and CSS. But I don't see a place talking about how to make the index.html
file upgrade when website deployment happen. And we do see in IE that the HTML content should have been changed but it still use the old HTML content.
One solution I find from google is to
<meta http-equiv="Cache-control" content="no-cache">
However, I am not sure whether this is the best solution?
By setting
content
value to0
, browsers will always load the page from the web server.As mentioned in the comments it's really the server configuration you want to be looking at but you haven't mentioned your setup. We run our AngularJS site with a .NET backend using IIS.
We update our site regularly and have had issues in the past with JS and CSS resources caching but we've solved it through the following settings:
Build
We use gulp to build our AngularJS application and as part of that we append a version number to the querystring of our main application CSS and Javascript files that change frequently. For example:
Server Configuration
In the root web.config we specify that we don't want to the index.html to cache by setting the
cache-control
,Pragma
andExpires
request headers as well as the max-age to 0.References:
You can specify IIS from the specific sites advanced settings that preloading is not enabled. Your site performance will however suffer. Also check that the application pool for the specific website has integrated pipeline mode on and .NET CLR version.
Yes, that is the correct way. You have to set the
Cache-Control
header to let the browsers know that they don't have to cache any content for that request.(
Pragma
&Cache-Control
is one and the same thing but from the different HTTP specification. See the answer here: Difference between Pragma and Cache-control headers?)See one of the related answer here: How to burst yeoman index.html cache