停止Chrome缓存我的JS文件

How*_*Gee 130 javascript caching google-chrome

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

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

Mar*_*nHN 192

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

对于Windows,这是F12或者CTRL + SHIFT + I在Mac上CMD + SHIFT + I打开DevTools.

Chrome Update于2018年9月推出的新途径:

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

  • 谢谢!我以为我在试图调试我的页面时失去了理智! (5认同)
  • chrome的主要失败是缓存事物......即使页面标记为没有缓存....哦,至少这是有效的,用户可能会受苦,但至少我可以开发 (4认同)
  • 请注意,"设置"不再位于右下方!单击**右上方的三个点菜单**进入设置. (4认同)
  • 位置是:右上角| "......"| 设置| 偏好| 网络| "禁用缓存"(当DevTools打开时). (4认同)
  • 我知道这很老了,但是谢谢你.我不得不经常清理我的缓存.;) (3认同)
  • 这是非常糟糕的做法!!!不,你不应该有一个临时的 hack 供你使用......你应该有一个适用于所有用户的永久解决方案。最好的方法是在 src 末尾添加一个随机查询字符串。src="someJs.js?someRandomStringCreatedByInlineJsOrServerRenderedCode" 这将使它每次都有一个新版本。一个好的随机字符串是获取今天的日期/时间并将其扔在那里。您可能必须将其转换为字符串,因为它可能是一个日期对象。这是被选中的答案并且被如此大力支持,这真的很糟糕。 (2认同)

小智 58

更快的方法是右键单击地址栏旁边的刷新图标,然后选择Empty Cache and Hard reload

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

  • 仅供参考,我尝试了所有这些,绝对没有任何效果.在我的机器上(使用Mountain Lion的默认设置),F12显示仪表板. (2认同)
  • 它比接受的答案好得多?您可以使用接受的答案正常重新加载. (2认同)

Sti*_*sis 20

单击重新加载按钮时按住shift键.


EGO*_*rds 13

添加script.js?a=[random Number]与PHP生成的随机数一样的东西.

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

  • 关于downvote的解释可能是有序的. (4认同)
  • 我偶然发现了这个问题,正在浏览答案。这是一个糟糕的主意,因为:1)在每次请求时生成随机数将导致浏览器在每次访问时重新下载文件。您需要一个_build time_值,以便浏览器仅在您对该站点进行更改时才重新生成该值。由于PHP是在运行时解释的,因此您可能需要在部署时执行。和2)生成随机数表示有时(随着时间的推移,概率会增加),浏览器会随机生成一些旧的缓存副本。如果必须在请求时间执行操作,请使用时间戳记! (2认同)

Mik*_*sen 11

一些想法:

  1. 在Chrome中刷新页面时,请执行CTRL + F5进行完全刷新.
  2. 即使您将expires设置为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"
Run Code Online (Sandbox Code Playgroud)

在.htaccess


Sta*_*ckG 6

快速步骤:

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

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

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

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


Agi*_*Pro 5

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

您始终可以 SHIFT-F5 并强制 Chrome 刷新,但如果您想在服务器上解决此问题,请包含以下响应标头:

Cache-Control: must-revalidate
Run Code Online (Sandbox Code Playgroud)

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

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

这是一篇博客文章,进一步讨论了这个问题。