Chrome会一直缓存我的旧页面,直到我点击刷新按钮

时间:2016-08-24 03:12:15

标签: javascript angularjs google-chrome browser-cache

我在Chrome中使用SPA时有一种非常奇怪的行为。我正在运行带有AngularJS前端的本地IIS服务器。我正在使用Gulp来缓存我所有的Javascript和CSS文件。最近我发现我的网站正在加载旧的HTML文件,这是由于角度为$templateCache,因此我使用gulp-angular-templatecache来解决此问题,但随后出现了一个新问题。

当我打开我的电脑,启动IIS服务器并通过在URL栏中输入localhost来加载我的Chrome应用程序时,Chrome会从缓存中加载所有内容,因此我会获得旧的JS,CSS和HTML文件(我看到chrome正在加载一个旧的index.html文件,但是如果我去了localhost/mainPage这样的其他路径,它会加载我的所有新文件,一切都按预期工作。之后,如果我再次转到localhost,旧网站将再次从缓存中加载!!

我不是专家,但这似乎是一种非常奇怪的行为。这是Chrome错误吗?我的AngularJS SPA

是Chrome出了问题吗?

在我的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>

1 个答案:

答案 0 :(得分:0)

有以下两种情况:

  • 开发时,您应该使用Google Chrome提供的disable cache选项。为此,打开Devtools(Chrome菜单&gt;更多工具..&gt; Devtools),转到网络标签,然后选中停用缓存
  • 发布到生产时,您应该在缩小的文件上使用任何文件修订工具。这会在文件的名称(如scripts.472bc7.js)中附加一个哈希值,以避免最终用户浏览器出现缓存问题