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

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


当前回答

当问到这个问题时,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开发人员有帮助,因此在这里分享。

其他回答

从版本50开始(如果我没记错的话),“禁用缓存”选项从Devtool设置中删除。转到“网络”选项卡,有“禁用缓存”选项。

嘿,如果您的网站使用的是PHP,那么请在html页面的开头放置以下PHP代码片段:

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

现在,在脚本或链接元素中加载CSS或JS文件等资源的任何地方,都会在附加“?”后将生成的随机值附加到请求URL通过PHP连接到URI:

    echo $rand;

就是这样!无论哪种浏览器,都不会再缓存您的网站。

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

要明确的是,Chrome中的禁用缓存复选框(这里是v17,但我认为是v15)不在主设置UI中。它位于开发人员工具设置UI中。

从浏览器窗口的扳手图标菜单(首选项菜单)中选择工具→ 开发人员工具在出现的开发人员工具UI中,单击右下角的齿轮图标。选中“网络”部分的“禁用缓存”复选框。

我已经使用了上面描述的其他选项,但我发现最好的方法是在chrome.exe的启动中添加以下参数。

“C:\Program Files(x86)\Google\Chrome\Application\Chrome.exe”--磁盘缓存大小=1-媒体缓存=1

我发现不禁用媒体缓存是一个好主意,但出于完整性的考虑。

实际上,我想要一个完全禁用缓存的选项,将内存用于IO而不是磁盘(这也会使加载时间快10倍!),但我认为chrome或任何浏览器都还没有这个选项。

除了禁用缓存选项(您可以通过开发人员工具窗口右下角的一个按钮--工具|开发人员工具,或Ctrl+Shift+I)之外,在开发人员工具的网络窗格上,您现在可以右键单击并从弹出菜单中选择“清除缓存”。