通常对于.js和.css文件,我们会在构建过程中添加一个类似xx.js?v=123的版本,然后在网站部署后,我们可以得到新版本的js和css。但我没有看到一个地方讨论如何在网站部署时进行index.html文件升级。我们确实在IE中看到,HTML内容应该已经更改,但它仍然使用旧的HTML内容。
.js
.css
xx.js?v=123
index.html
我从谷歌找到的一个解决方案是
<meta http-equiv="Cache-control" content="no-cache">
然而,我不确定这是否是最好的解决方案?
clj7thdc1#
是的,这是正确的方式。您必须设置Cache-Control头,让浏览器知道他们不必为该请求缓存任何内容。
Cache-Control
<meta http-equiv="Cache-control" content="no-cache, no-store, must-revalidate"> <meta http-equiv="Pragma" content="no-cache">
(Pragma和Cache-Control是同一件事,但来自不同的HTTP规范。请在此处查看答案:Difference between Pragma and Cache-control headers?)
Pragma
请参阅此处的相关答案之一:如何拆分yeoman index.html缓存
ffdz8vbo2#
正如评论中提到的,这实际上是您想要查看的服务器配置,但您没有提到您的设置。我们使用IIS在.NET后端运行AngularJS站点。
我们定期更新我们的网站,过去在JS和CSS资源缓存方面遇到过问题,但我们通过以下设置解决了这个问题:
构建
我们使用GULP来构建AngularJS应用程序,并且作为其中的一部分,我们将版本号附加到我们的主应用程序的频繁更改的CSS和Java脚本文件的查询字符串中。例如:
<link href="css/default.min.css?v=2" rel="stylesheet" />
服务器配置
在根web.config中,我们通过将cache-control、Pragma和Expires请求头以及max-age设置为0来指定不希望缓存index.html。
cache-control
Expires
<location path="index.html"> <system.webServer> <staticContent> <clientCache cacheControlMode="DisableCache" cacheControlMaxAge="0.00:00:00" /> </staticContent> <httpProtocol> <customHeaders> <add name="Cache-Control" value="no-cache, no-store, must-revalidate" /> <add name="Pragma" value="no-cache" /> <add name="Expires" value="-1" /> </customHeaders> </httpProtocol> </system.webServer> </location>
参考资料:
yduiuuwa3#
通过将content值设置为0,浏览器将始终从Web服务器加载页面。
content
0
<meta http-equiv="expires" content="0">
ezykj2lf4#
您可以从特定站点的高级设置中指定不启用预加载。然而,您的站点性能将受到影响。还要检查特定网站的应用程序池是否在和.NET CLR版本上集成了管道模式。
4条答案
按热度按时间clj7thdc1#
是的,这是正确的方式。您必须设置
Cache-Control
头,让浏览器知道他们不必为该请求缓存任何内容。(
Pragma
和Cache-Control
是同一件事,但来自不同的HTTP规范。请在此处查看答案:Difference between Pragma and Cache-control headers?)请参阅此处的相关答案之一:如何拆分yeoman index.html缓存
ffdz8vbo2#
正如评论中提到的,这实际上是您想要查看的服务器配置,但您没有提到您的设置。我们使用IIS在.NET后端运行AngularJS站点。
我们定期更新我们的网站,过去在JS和CSS资源缓存方面遇到过问题,但我们通过以下设置解决了这个问题:
构建
我们使用GULP来构建AngularJS应用程序,并且作为其中的一部分,我们将版本号附加到我们的主应用程序的频繁更改的CSS和Java脚本文件的查询字符串中。例如:
服务器配置
在根web.config中,我们通过将
cache-control
、Pragma
和Expires
请求头以及max-age设置为0来指定不希望缓存index.html。参考资料:
yduiuuwa3#
通过将
content
值设置为0
,浏览器将始终从Web服务器加载页面。ezykj2lf4#
您可以从特定站点的高级设置中指定不启用预加载。然而,您的站点性能将受到影响。还要检查特定网站的应用程序池是否在和.NET CLR版本上集成了管道模式。