停止 Chrome 缓存我的 JS 文件

我会改变我的 JS 文件,但它不会真正改变在浏览器中,我必须重命名的文件,以便它重新加载它。有没有什么。我可以添加的 htaccess 命令或者什么东西来使它停止缓存?

它甚至缓存我的 html 页面硬核。我需要重新打开我的整个浏览器,只是为了看到变化。有可能是服务器出了问题吗?

136478 次浏览

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

您是否尝试过使用“ NO-CACHE”和“ cache-control = NO-CACHE”这样的语法结构来使用失效 = 0? (我不知道他们是怎么说脚本的)。

按住 Shift,同时单击重新加载按钮(F5)。

这迫使浏览器的 忽略缓存内容和拉网页的 新的副本到浏览器。Shift + F5保证 最新的网站内容将被加载。然而,取决于页面大小,它通常是 慢一点而不仅仅是 F5

你可以点击右上角的设置图标 ... | More Tools | 开发工具 | 网络 | 关闭缓存(当 DevTools 打开时)

对于窗口,这是 F12CTRL + SHIFT + I,而在 mac CMD + SHIFT + I打开 DevTools。

2018年9月 Chrome 更新的新路径:

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

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

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

一些想法:

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

如果想禁用服务器上的缓存,可以这样做:

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 中

<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>

更快的方法是右键单击地址栏旁边的刷新图标并选择 空缓存和硬重载

只要确保 Chrome 的开发工具是打开的。(按 F12) 顺便说一下... ... 这个技巧只适用于 Windows、 Ubuntu 和 Mac 操作系统下的 Chrome

快速步骤:

1)点击 Chrome 菜单-> 工具-> 开发工具,打开开发工具仪表板

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

3)勾选“禁用缓存(当 DevTools 打开时)”选项

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

当我浏览网站的时候,我得到了相同的 css 文件(在托管公司服务器上,真正的域名) ,我无法得到最新版本的 chrome。当我在 Firefox 上浏览这个文件时,我能够得到它的更新版本。这些答案对我都不管用。我也有我的机器上的网站文件和浏览本地主机使用我的本地 apache 服务器的网站。我关闭了我的阿帕奇服务器然后我就能拿到更新的文件了。我本地的阿帕奇服务器不知怎么搞乱了铬缓存。希望这个能帮到别人,因为我很难修好它。

  1. 开放式开发工具

    • 要么是 F12
    • 或者 ...-> More Tools-> Developer Tools
  2. Empty Cache and Hard Reload

    • 右键单击刷新图标(只需向左到 URL 地址栏)
    • 或者左键单击刷新图标并保持1秒钟

问题是 Chrome 需要在 Cache-Control 的头部包含 must-revalidate,以便重新检查文件是否需要重新获取。

你总是可以 SHIFT-F5并强制 Chrome 刷新,但是如果你想在服务器上修复这个问题,包括这个响应头:

Cache-Control: must-revalidate

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

如果你没有设置这个头,那么在没有任何其他设置使文件无效的情况下,Chrome 将与服务器进行 永远不会检查,看看是否有更新的版本。

下面是进一步讨论这个问题的 博客文章

我知道这是个“老”问题。但缓存带来的麻烦从来都不是问题。经过大量的尝试和错误,我发现我们的一个网站托管提供商通过 CPanel 这个应用程序称为 Cachewall。我只是点击了启用开发模式和... 瞧! ! !它立即停止了长期遭受的痛苦:) 希望这能帮到别人。 R

你可以打开一个匿名窗口。当禁用普通 chrome 窗口中的缓存时,切换到一个匿名窗口对我来说很有用,但仍然没有重新加载自从上次缓存以来更改过的 JavaScript 文件。

Https://www.quora.com/does-incognito-mode-on-chrome-use-the-cache-that-was-previously-stored

那些对我不起作用的事情:

  • 点击刷新图标(有或没有移位)
  • SHIFT-F5,CTRL-F5
  • 在一个匿名的窗口打开页面
  • F12(打开开发工具)/(开发工具)设置/禁用缓存(当开发工具打开时)

我所说的不工作是指: 在文件系统中。Js 文件已经更新,但是 Chrome 没有接收到更新。这意味着页面脚本使用旧的逻辑执行,Dev tools Scripts/.../Compiled/... 显示旧的。Js 内容。

什么对我有用:

  • 关闭 Chrome 并重新打开页面。在此之后,Dev 工具脚本/.../Compiled/... 显示更新。Js 内容(与文件系统匹配)和页面脚本使用更新的逻辑执行。

Chrome 版本86.0.4240.193(正式版)(64位)