Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使index.html在AngularJS网站内容发生更改时不缓存?_Html_Angularjs_Caching_Deployment - Fatal编程技术网

如何使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">