禁用Chrome缓存以进行网站开发

1725

我正在修改一个网站的外观(CSS 修改),但由于令人恼火的持久缓存,无法在 Chrome 上看到结果。我尝试过 Shift+ 刷新,但它没有起作用。

我该如何暂时禁用缓存或以某种方式刷新页面,以便能够看到更改?


207
这可能是Chrome最糟糕的一个问题。我浪费了太多时间琢磨为什么东西出错了,只发现即使使用^F5强制完全重新加载页面,它仍然使用一个过时的、一个小时前的资源。 - Glenn Maynard
51
浏览器应该缓存。请记住,您的用户也会进行缓存,因此可能无法看到您在网站上线后所做的更改。避免这种情况的方法是对文件进行版本控制。例如:my_css.css?version=something_unique。如果浏览器之前没有见过这个版本,则会再次下载文件。something_unique可以是最后修改日期等内容。 - user984003
40
@user984003,“Ctrl+Shift+R”或“Shift+R”应该清空缓存... - Adonis K. Kakoulidis
23
如果我告诉他们不要缓存,就不会缓存。是的,对于最终发布,一个破坏缓存的版本号非常好,因为用户正在使用它,但是当我构建新站点并希望在开发过程中看到增量更改时,我不会每次更改版本号。这就是为什么我使用 Firefox 进行开发的原因 - 它有最可靠的禁用缓存选项! - andrewb
15
是的,浏览器在浏览时会缓存...。但在开发时,你需要更多地控制它。 - ahnbizcad
显示剩余5条评论
35个回答

0

我在Windows系统中使用ctrl + shift + delete组合键,当Chrome对话框弹出时,按下回车键。每次执行此操作时,可以配置需要清除的内容。在这种情况下,无需打开开发工具。


0

在使用Chromium进行VS Code调试时,我会在我的launch.json文件中添加一个runtimeArgs参数--aggresive-cache-discard。这将清除所有缓存。当我刷新后,代码更改会立即显示。


0

嘿,如果您的网站正在使用PHP,则请在HTML页面开头放置以下小的PHP代码片段:

   //dev versioning - stop caching
   $rand = rand(1, 99999999);

现在无论你在脚本或链接元素中加载类似CSS或JS文件的资源,都要通过PHP在URI末尾添加'?'来追加生成的随机值到请求URL中:

    echo $rand;

就是这样!不会再有浏览器缓存您的网站了 - 无论是哪种类型。

当然,在发布之前删除您的代码或将$rand设置为空字符串以允许再次缓存。


0
如何暂时禁用缓存或以某种方式刷新页面,以便我可以看到更改?
“缓存”指的是哪个不太清楚。浏览器可以使用多种方法持久地缓存内容,其中之一是Web Storage,另一个是Cache-Control。
一些浏览器还具有与Service Workers配合使用的缓存,用于创建提供离线支持的渐进式Web应用程序(PWA)。
要清除PWA的缓存:
self.caches.keys().then(keys => { keys.forEach(key => console.log(key)) })

要列出缓存键的名称,请运行:

self.caches.delete('my-site-cache')

按名称删除缓存键(例如,my-site-cache)。然后刷新页面。

如果在刷新后控制台中看到任何与工作人员相关的错误,则还需要注销已注册的工作人员:

navigator.serviceWorker.getRegistrations()
  .then(registrations => {
    registrations.forEach(registration => {
      registration.unregister()
    }) 
  })

-1
将这段代码添加到您的 标签中,它应该就能起作用了。
<meta name="robots" content="noarchive">

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接