如何使index.html在AngularJS网站内容发生更改时不缓存?
通常,对于如何使index.html在AngularJS网站内容发生更改时不缓存?,html,angularjs,caching,deployment,Html,Angularjs,Caching,Deployment,通常,对于.js和.css文件,我们将在构建过程中添加一个版本 xx.js?v=123,然后在网站部署后,我们可以得到新版本的js和CSS。但是我没有看到一个地方谈论如何在网站部署时升级index.html文件。我们确实在IE中看到HTML内容应该被更改,但它仍然使用旧的HTML内容 我从谷歌找到的一个解决方案是 <meta http-equiv="Cache-control" content="no-cache"> 但是,我不确定这是否是最好的解决方案?是的,这是正确的方法。
.js
和.css
文件,我们将在构建过程中添加一个版本
xx.js?v=123
,然后在网站部署后,我们可以得到新版本的js和CSS。但是我没有看到一个地方谈论如何在网站部署时升级index.html
文件。我们确实在IE中看到HTML内容应该被更改,但它仍然使用旧的HTML内容
我从谷歌找到的一个解决方案是
<meta http-equiv="Cache-control" content="no-cache">
但是,我不确定这是否是最好的解决方案?是的,这是正确的方法。您必须设置
缓存控制
标题,让浏览器知道他们不必为该请求缓存任何内容
<meta http-equiv="Cache-control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
(Pragma
&Cache-Control
是一回事,但来自不同的HTTP规范。请参见此处的答案:)
请参见此处的一个相关答案:如评论中所述,这确实是您想要查看的服务器配置,但您尚未提及您的设置。我们使用IIS运行带有.NET后端的AngularJS站点 我们定期更新我们的网站,过去在JS和CSS资源缓存方面存在问题,但我们通过以下设置解决了问题: 构建 我们使用gulp来构建AngularJS应用程序,并在主应用程序CSS和Javascript文件的查询字符串中添加一个版本号,这些文件经常更改。例如:
<link href="css/default.min.css?v=2" rel="stylesheet" />
参考资料:
- IIS客户端缓存:
- 缓存控制HTTP头:
- Pragma HTTP头:
- 过期HTTP标头:
content
值设置为0
,浏览器将始终从web服务器加载页面
<meta http-equiv="expires" content="0">
您可以从未启用预加载的特定站点高级设置中指定IIS。但是,您的站点性能将受到影响。还要检查特定网站的应用程序池是否在和.NET CLR版本上集成了管道模式 如何打破对配置错误的web服务器缓存“答案”的关键功能?@RickO'Shea我没听明白你的意思?你能解释一下,什么是完全错误的吗?作者要求提供index.html
的快速缓存,因此我相应地回答了这个问题。如果您想为png文件添加no cache
头文件,则必须配置服务器,例如Apache或Nginx。我知道这个头也可以通过服务器配置直接添加,但我回答了这个问题。@RickO'Shea这是否也会禁用js和css文件的缓存?这些文件很大,总是需要缓存。这个解决方案会破坏其他资产的缓存还是只缓存index.html?我应该在哪里设置上面提到的代码index.html?你可以把它放在index.html文件的头部Expires
和Pragma
被弃用并用于HTTP/1.0。许多年前,就不再需要它了。
<meta http-equiv="expires" content="0">