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

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


当前回答

我的情况是,浏览器从磁盘加载缓存数据,即使我检查了禁用缓存(我使用的是Chrome)。我所有的CSS和JS都是从服务器加载的,而不是网页。这发生在我的本地和生产部门。

为了解决这个问题,我需要在URL中添加一个额外的参数,以迫使浏览器从服务器获取网页,即使控制器不需要它。

我使用的是ASP.Net,所以这里是我的示例:

//Controller function
public ActionResult Index()
    {
        return View();
    }
//Link
@Html.Action("Index", "Home", new { ts = DateTime.Now.Ticks.ToString()})

结果是,它将生成如下链接:http://www.myweb.com/Home/Index?ts=636558555408282209

这是我的处境和解决方案。希望它能帮助一些人。

其他回答

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

我遇到了同样的问题,我试着:

控制换档R,禁用F12中的缓存控制F5。

然后我发现,对非https站点使用.appcache清单是不可取的。我删除了我的site.appcache文件及其在html标记中的引用,现在我看到了每个页面的最新版本!

Chrome DevTools可以禁用缓存。

右键单击并选择Inspect Element以打开DevTools。或使用以下键盘快捷键之一:

第12页控制+Shift+i命令+Shift+i

单击工具栏中的网络以打开网络窗格。选中顶部的禁用缓存复选框。

请记住,正如@ChromiumDev的一条推文所述,此设置仅在开发工具打开时才处于活动状态。

请注意,这将导致重新加载所有资源。如果您希望仅对某些资源禁用缓存,则可以修改服务器随文件一起发送的HTTP标头。

如果您不想使用禁用缓存复选框,在DevTools打开的情况下长按刷新按钮将显示一个菜单,其中包含硬重新加载或空缓存和硬重新加载选项,这应该具有类似的效果。阅读选项之间的差异,了解要选择哪个选项。以下快捷方式可用:

Mac上的Command+Shift+RWindows或Linux上的Control+Shift+R

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

还有两个选项可以永久禁用Chrome中的页面缓存:

1.在注册表中停用Chrome缓存

打开注册表(开始->命令->Regedit)

搜索:HKEY_CLASSES_ROOT\ChromeHTML\shell\open\command

在…之后更改零件。。。chrom.exe”设置为该值:–禁用应用程序缓存–媒体缓存大小=1–磁盘缓存大小=1-“%1”

示例:“C:\Program Files(x86)\Google\Chrome\Application\Chrome.exe”-禁用应用程序缓存–媒体缓存大小=1–磁盘缓存大小=1-“%1”

重要:

后面有空格和连字符。。。chrome.exe“保留chrome.exe的路径如果复制该行,请确保检查引号是否为实际引号。

2.通过更改快捷方式财产来停用Chrome缓存

右键单击Chrome图标并在上下文菜单中选择“财产”。将以下值添加到路径:–磁盘缓存大小=1

例子:“C:\Program Files(x86)\Google\Chrome\Application\Chrome.exe”–磁盘缓存大小=1

重要:

后面有空格和连字符。。。chrome.exe“保留chrome.exe的路径