Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.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
Javascript Chrome一直在缓存我的旧页面,直到我按下刷新按钮_Javascript_Angularjs_Google Chrome_Browser Cache - Fatal编程技术网

Javascript 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从缓存加载所有内

我在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)后面附加一个哈希,以避免最终用户的浏览器出现缓存问题

我已经在每个文件(缓存半身像)中添加了一个哈希值,这就是问题所在,chrome一直在获取旧的html文件