Javascript Chrome一直在缓存我的旧页面,直到我按下刷新按钮
我在Chrome中的Javascript Chrome一直在缓存我的旧页面,直到我按下刷新按钮,javascript,angularjs,google-chrome,browser-cache,Javascript,Angularjs,Google Chrome,Browser Cache,我在Chrome中的SPA有一种非常奇怪的行为。我正在使用AngularJS前端运行本地IIS服务器。我正在使用Gulp来缓存我所有的Javascript和CSS文件。最近,我发现我的站点正在加载旧的HTML文件,这是由于angular$templateCache,所以我使用gulp angular templateCache解决了这个问题,但随后出现了一个新问题 当我打开电脑,启动IIS服务器,通过在URL栏中键入localhost,用Chrome加载我的应用程序,Chrome从缓存加载所有内
SPA
有一种非常奇怪的行为。我正在使用AngularJS
前端运行本地IIS服务器。我正在使用Gulp
来缓存我所有的Javascript和CSS文件。最近,我发现我的站点正在加载旧的HTML文件,这是由于angular$templateCache
,所以我使用gulp angular templateCache
解决了这个问题,但随后出现了一个新问题
当我打开电脑,启动IIS服务器,通过在URL栏中键入localhost
,用Chrome加载我的应用程序,Chrome从缓存加载所有内容,因此我得到了旧的JS、CSS和HTML文件(我看到Chrome正在加载一个旧的index.HTML
文件)但是,如果我转到其他路径,如localhost/mainPage
,它会加载我的所有新文件,并且一切正常。之后,如果我再次转到localhost
,旧站点将再次从缓存加载
我不是专家,但这似乎是一种非常奇怪的行为。这是一个Chrome bug吗?是Chrome的错还是我的AngularJS的错
在我的Web.config
中,我有这样一个选项来禁用index.html
的缓存:
<!-- Disable index.html cache -->
<location path="index.html">
<system.webServer>
<staticContent>
<clientCache cacheControlMode="DisableCache" />
</staticContent>
</system.webServer>
</location>
这将最大限度地延长所有其他文件的缓存时间:
<system.webServer>
<staticContent>
<!-- Cache busting for 1 year (max recommended value) -->
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00" />
</staticContent>
</system.webServer>
有两种情况:
- 在开发时,您应该使用Google Chrome提供的
选项。为此,请打开Devtools(Chrome菜单>更多工具..>Devtools),转到网络选项卡并选中显示禁用缓存的框禁用缓存
- 当发布到生产环境时,您应该对缩小的文件使用任何文件修改工具。这会在文件名(如scripts.472bc7.js)后面附加一个哈希,以避免最终用户的浏览器出现缓存问题