我正在修改网站的外观(CSS修改),但由于烦人的持久缓存,无法在Chrome上看到结果。我尝试了Shift+刷新,但不起作用。

如何临时禁用缓存或以某种方式刷新页面以查看更改?


当前回答

为了使用Chromium在VS代码中进行调试,我将--aggresive缓存丢弃的runtimeArgs添加到launch.json文件中。这消除了所有缓存。刷新时立即显示代码更改。

其他回答

如何使用书签来更改页面名称以防止页面缓存。在Chrome中,您将创建一个新书签,然后将代码粘贴到URL中。单击书签,页面将重新加载时间戳以阻止缓存。

javascript:(function(){var idx = location.href.indexOf('?');var d = new Date();var str = location.href.substr(0,idx) + '?version=' + d.getTime();location.href=str; void 0;})();

chrome web商店中有一个名为Clear Cache的chrome扩展。

我每天都使用它,我认为它是一个非常有用的工具。您可以将其用作重新加载按钮,并可以清除缓存,如果您还喜欢cookie、区域设置存储、表单数据等,还可以定义在哪个域上发生这种情况。因此,只需在您选择的域上按下重新加载按钮,就可以清除所有这些垃圾。

非常好!

您也可以在选项中为此定义键盘快捷键!

另一种方法是在隐姓埋名模式下启动铬窗口。在这里,缓存也应该被完全禁用。

我只是被抓住了,但不一定是因为Chrome。

我正在使用jQuery发出AJAX请求。我在请求中将缓存属性设置为true:

   $.ajax({
        type: 'GET',
        cache: true,
        ....

将此设置为false修复了我的问题,但这并不理想。

我不知道这些数据保存在何处,但我知道chrome从未在服务器上发出请求。

当问到这个问题时,Chrome不支持禁用缓存功能。但现在,您可以在Chrome开发工具的网络选项卡中找到“禁用缓存”功能。

禁用缓存的网络选项卡

您可以看到,所有资源(我已经过滤了JS资源)都是从网络中获取的,而不是从磁盘/内存缓存中加载的。

未选择禁用缓存

您可以看到,当我刷新页面但没有选择“禁用缓存”功能时,几乎所有资源都是从缓存加载的。

这对于本地web开发很好,但我想强调一些限制。如果到目前为止讨论的解决方案符合您的用例,您可以停止阅读这里的内容。

局限性

您必须保持DevTools打开并禁用缓存当您禁用缓存时,该选项卡中的所有资源都将禁用缓存。如果您只想禁用1-2个资源的缓存,则会使速度变慢,效率低下

使用Requestly Chrome扩展禁用特定资源(JS/CSS/Images等)的缓存

最近,我偶然发现https://dev.to/requestlyio/disable-caching-of-particular-js-css-file-2k82这帮助我理解了如何禁用特定资源的缓存。

这里的技巧是在每次发出请求时向资源添加一个随机值的查询参数。使用Requestly Query Param Rule,可以添加如下参数

URL Contains mywebsite.com/myresource.js
Add param cb rq_rand(4)

当发出请求时,rq_rand(4)被4位随机数替换。

请求查询参数规则以添加随机参数

添加规则后,不缓存JS/CSS文件

在这里,您可以看到“禁用缓存”没有被选中,并且由于URL中的随机参数(cb-将其作为缓存破坏器读取),资源仍然没有从缓存加载。

好的是,您不需要为实现这种行为而保持开发工具的开放性您可以将其永久打开,您的浏览体验也不会受到影响。

如何获取规则

这是一个链接,如果您已安装Requestly,则可以使用该链接浏览和下载规则-https://app.requestly.io/rules/#sharedList/1600501411585-禁用缓存堆栈流

免责声明:我构建了Requestly,但我认为这可能对很多web开发人员有帮助,因此在这里分享。

如何临时禁用缓存或以某种方式刷新页面以查看更改?

目前还不清楚你指的是哪种“缓存”。有几种不同的方法可以让浏览器持久地缓存内容。Web存储是其中之一,缓存控制是另一个。

一些浏览器还具有缓存,与服务工作者一起使用,以创建提供离线支持的渐进式Web应用程序(PWA)。

清除PWA的缓存

self.caches.keys().then(keys => { keys.forEach(key => console.log(key)) })

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

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

按名称删除缓存密钥(即我的站点缓存)。然后刷新页面。

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

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