停止Chrome缓存我的JS文件

时间:2011-12-05 21:56:29

标签: javascript caching google-chrome

我将对我的JS文件进行更改,但它不会在浏览器中真正更改,我必须每次重命名文件以便重新加载它。是否有某种.htaccess命令我可以添加或者某些东西让它停止缓存?

它甚至缓存了我的html页面的核心。我需要重新打开我的整个浏览器才能看到更改。它可能是服务器问题吗?

13 个答案:

答案 0 :(得分:183)

您可以点击右上角... |的设置图标更多工具| 开发人员工具 | 网络 | 禁用缓存(当DevTools打开时)

对于Windows,这是 F12 CTRL + SHIFT + I ,而在mac CMD + SHIFT + I 打开DevTools。

Chrome更新于2018年9月的新途径:

点击右上角... |的设置图标设置 | 偏好设置 | 开发人员工具 | 网络 | 禁用缓存(当DevTools打开时)

答案 1 :(得分:57)

更快捷的方法是右键点击地址栏旁边的刷新图标,然后选择清空缓存并重新加载

确保Chrome的开发工具已打开。 (按F12) 顺便说一句......这个技巧仅适用于Chrome for Windows,Ubuntu和Mac OS

答案 2 :(得分:16)

单击重新加载按钮时保持移位。

答案 3 :(得分:13)

使用PHP生成的随机数添加script.js?a=[random Number]之类的内容。

你试过expire = 0,pragma“no-cache”和“cache-control = NO-CACHE”? (我不知道他们对Scripts的看法)。

答案 4 :(得分:11)

一些想法:

  1. 在Chrome中刷新页面时,请按CTRL + F5进行全面刷新。
  2. 即使将expires设置为0,它仍会在会话期间缓存。您必须再次关闭并重新打开浏览器。
  3. 确保在服务器上保存文件时,时间戳会更新。 Chrome会首先发出HEAD命令而不是完整的GET,以查看是否需要再次下载完整文件,服务器会使用时间戳来查看。
  4. 如果要在服务器上禁用缓存,可以执行以下操作:

    Header set Expires "Thu, 19 Nov 1981 08:52:00 GM"
    Header set Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0"
    Header set Pragma "no-cache"
    

    在.htaccess

答案 5 :(得分:6)

快速步骤:

1)转到Chrome菜单 - >打开开发人员工具信息中心工具 - >开发人员工具

2)点击右侧的设置图标(这是一个齿轮!)

3)选中“禁用缓存(当DevTools打开时)”框

4)现在,当仪表板启动时,只需点击刷新,JS就不会被缓存!

答案 6 :(得分:2)

在对我的Web应用程序进行更新时,我将使用处理程序返回单个JS文件以避免服务器上的大量命中,或者向它们添加一个小的查询字符串:

<script type="text/javascript" src="/mine/myscript?20111205"></script>

答案 7 :(得分:2)

问题是Chrome需要在Cache-Control`标头中包含must-revalidate才能重新检查文件以查看是否需要重新获取文件。

您可以随时SHIFT-F5并强制Chrome刷新,但如果您想在服务器上解决此问题,请添加此响应标头:

Cache-Control: must-revalidate

这告诉Chrome检查服务器,看看是否有更新的文件。如果有更新的文件,它将在响应中收到。如果没有,它将收到304响应,并确保缓存中的那个是最新的。

如果您没有设置此标头,那么在没有任何其他设置使文件无效的情况下,Chrome将从不检查服务器以查看是否有更新的版本。

这是一个blog post,可以进一步讨论这个问题。

答案 8 :(得分:1)

<Files *>
Header set Cache-Control: "no-cache, private, pre-check=0, post-check=0, max-age=0"
Header set Expires: 0
Header set Pragma: no-cache
</Files>

答案 9 :(得分:1)

我知道这是一个“老”的问题。但是缓存带来的麻烦从未如此。经过大量的试验和错误,我发现我们的一个网络托管服务提供商通过CPanel这个应用程序称为Cachewall。我刚刚点击了启用开发模式并且......瞧!它立即停止了长期遭受的痛苦:) 希望这有助于其他人...... [R

答案 10 :(得分:0)

当我浏览网站(在托管公司服务器上使用真实域名)时,我获得了相同的css文件,而我无法获得Chrome上的更新版本。当我在Firefox上浏览时,我能够获得该文件的更新版本。这些答案都不适合我。我的机器上也有网站文件,使用本地apache服务器通过localhost浏览网站。我关闭了我的apache服务器,我能够获得更新的文件。不知怎的,我的本地apache服务器搞乱了chrome缓存。希望这有助于某人,因为我很难解决这个问题。

答案 11 :(得分:0)

您可以改为打开隐身窗口。在普通镀铬窗口中禁用缓存时切换到隐身窗口对我来说仍然没有重新加载自上次缓存以来我已更改的JavaScript文件。

https://www.quora.com/Does-incognito-mode-on-Chrome-use-the-cache-that-was-previously-stored

答案 12 :(得分:0)

不适用于我的东西

  • 单击刷新图标(带或不带移位)
  • SHIFT-F5,CTRL-F5
  • 在隐身窗口中打开页面
  • F12(打开Dev工具)/(Dev工具)设置/禁用缓存(在开发工具处于打开状态时)

我不工作的意思是: 在文件系统中,.js文件已更新,但Chrome不会接受更改。这意味着页面脚本将按照旧的逻辑执行,Dev工具的Scripts / ... / Compiled / ...显示了旧的.js内容。

什么对我有用:

  • 关闭Chrome,然后重新打开页面。在使用此开发工具之后,Scripts / ... / Compiled / ...将显示更新的.js内容(与文件系统匹配),而页面脚本则具有更新的逻辑。

Chrome版本86.0.4240.193(官方内部版本)(64位)