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

tom*_*mes 1563 browser caching google-chrome browser-cache google-chrome-devtools

我正在修改网站的外观(CSS修改)但由于恼人的持久缓存而无法在Chrome上看到结果.我试过Shift+刷新但它不起作用.

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

Ste*_*eve 1943

Chrome DevTools可以禁用缓存.

  1. 右键单击并选择Inspect Element打开DevTools.或使用以下键盘快捷键:
    • F12
    • Command在Mac上+ Option+i
    • ControlWindows或Linux上的+ Shift+i
  2. 单击 Network工具栏中的以打开网络窗格.
  3. 选中Disable cache顶部的复选框.

开发工具面板的屏幕截图

请记住,作为一个鸣叫@ChromiumDev指出,该设置是只由当devtools是开放的.

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

如果您不想使用该Disable cache复选框,则在打开DevTools的情况下长按刷新按钮将显示一个菜单,其中包含选项Hard ReloadEmpty Cache and Hard Reload应具有类似效果的选项.了解选项之间的区别.可以使用以下快捷方式:

  • Command在Mac上+ Option+R
  • ControlWindows或Linux上的+ Shift+R

长按

  • 根据我的经验,当开发工具打开时,此设置(以及该面板上的所有设置)仅生效*. (247认同)
  • @Steve这对我不起作用.我没有得到任何更改,即使我有Chrome 19.0.1084.52,我选中该框以禁用缓存.我尝试打开开发面板.我尝试关闭它.我甚至尝试重新启动浏览器,然后重新启动计算机.它似乎仍然继续给我一个页面的缓存版本.我该怎么办?Chrome之前给了我这样的问题,所以我删除了与我的电脑关联的所有内容,然后安装了chrome.它修复了大多数事情,例如"永久加载历史记录选项卡".我想它仍然不起作用. (27认同)
  • 我发现在更改设置后刷新当前页面时这不起作用.只有当我离开然后又回来时才开始工作. (11认同)
  • 这种设置是Web开发历史上最大的谎言.重启我的电脑和chrome仍然显示错误的结果,而firefox显示最新的CSS :( (4认同)
  • **不**用**本地文件**. (3认同)
  • ...或者您可以在隐身模式下进行调试!(不缓存任何文件) (3认同)
  • 这在某些方面对我有用,但不再有效.我无法正常刷新页面,除非我在离开页面时手动清除缓存,或者如果我在新的隐身窗口中打开页面.我在mac上使用chrome.有谁知道是否有修复或是否已损坏或其他什么?谢谢! (2认同)
  • Mac 上硬刷新的快捷键是 Command + Shift + R (2认同)

dan*_*ano 245

在此输入图像描述

当您需要每小时清理缓存30次时清除缓存太烦人了.所以我安装了一个名为Classic Cache Killer的Chrome扩展程序,可以在每次加载页面时清除缓存.

Chrome Store Link(免费) (现在没有恶意软件!)

现在我的模拟json,javascript,css,html和数据每次每个页面加载刷新.

如果我需要清除缓存,我永远不必担心.

我找到了大约20个用于Chrome的缓存清理程序,但这个看起来很轻巧且省力.在更新中,Cache Killer现在可以保持"始终开启"状态.

注意:我不知道插件作者的任何方式.我发现它很有用.

  • 由于恶意软件而从Chrome扩展程序商店中删除:(替代品? (5认同)
  • 是的,Chrome Dev Tools选项对我来说似乎不起作用.但缓存杀手就像一个魅力.重新加载时间明显变慢,如4-5倍,但实际提供的新内容显然要快得多. (4认同)
  • 最终写出了自己的照片,工作原理相同,但是可以在每个选项卡之间切换。我保证MIT许可证,没有恶意软件!https://github.com/themichaelyang/cache-clearer (3认同)
  • 清除缓存和禁用缓存仅在我的mac上使用localhost时才起作用.对于在线内容,我很清醒,也希望看到任何变化.这个扩展是救命稻草. (2认同)
  • 我发现使用Disable Cache会导致本地存储问题,特别是使用Auth0进行角度存储.Cache Killer工作正常,不会导致本地存储问题. (2认同)
  • 由于CacheKiller的chrome存储URL已关闭,请使用此URL下载CRX文件,然后将该文件拖到chrome扩展窗口中进行安装:https://www.crx4chrome.com/extensions/jpfbieopdmepaolggioebjmedmclkbap/ (2认同)
  • leddit的奇迹https://www.reddit.com/r/webdev/comments/6d4tms/chrome_extension_cache_killer_gone/dp4uzz6/对于许可证等没有任何线索所以不知道如果这坚持下去. (2认同)

Jac*_*ter 198

重装菜单的图片

  1. F12,然后(打开控制台)拉起Chrome开发人员控制台:

  2. 右键单击(或按住左键单击)浏览器顶部的重新加载按钮,然后选择"清空缓存和硬重新加载".

这将超出"Hard Reload"以完全清空缓存,确保通过javascript等下载的任何内容也将避免使用缓存.你不必弄乱设置或任何东西,这是一个快速的一次性解决方案.

  • 好吧,它绝对不能在Mac上工作,我点击了具有各种键组合的重新加载按钮;) (7认同)
  • 不确定这是多久,但是从Chrome 41开始,如果您打开了开发人员工具窗口,则单击并按住重新加载按钮可在OS X上运行. (7认同)
  • @DatProgram不,它在Linux上也适用于我. (3认同)
  • 它也不会清除页面内iframe的缓存. (2认同)
  • 在macOS Sierra上为我工作 (2认同)
  • 太棒了!在OSX上为我工作 (2认同)

小智 45

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

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

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

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

将... chrom.exe"之后的部分更改为此值: –disable-application-cache –media-cache-size=1 –disk-cache-size=1 — "%1"

例: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" -disable-application-cache –media-cache-size=1 –disk-cache-size=1 — "%1"

重要:

  • 在... chrome.exe之后有一个空格和连字符

  • 保留chrome.exe的路径

  • 如果您复制该行,请务必检查,如果报价是实际报价.

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

右键单击Chrome图标,然后在上下文菜单中选择"属性".将以下值添加到路径: –disk-cache-size=1

例: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" –disk-cache-size=1

重要:

  • 在... chrome.exe之后有一个空格和连字符

  • 保留chrome.exe的路径

  • 好答案.虽然对于大多数人来说,在开发过程中禁用缓存只是暂时的事情.永久禁用它会显着降低正常的浏览体验,并且是一种糟糕的互联网公民身份,因为它会给您访问的Web服务器带来不必要的负担. (3认同)
  • 我不同意不良的互联网公民身份,我们在这里谈论的是为开发工作创建一些捷径。因此,这绝对是恕我直言的最佳答案。只是一件小事。每次我在Windows上从此SO页面将此内容复制到某个Chrome快捷方式时,其中某些字符都不会正确显示。这些是正确的:`“ C:\ Program Files(x86)\ Google \ Chrome \ Application \ chrome.exe” --disable-application-cache --media-cache-size = 1 --disk-cache-size = 1`另外,“%1”之前的字符是什么?我不知道 (3认同)

Kar*_*son 32

如果您不想编辑Chrome的设置,可以使用隐身模式获得相同的结果.


Tim*_*ing 22

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


Ton*_* L. 22

  1. F12 打开Chrome DevTools
  2. F1 打开DevTools设置
  3. 检查禁用缓存(当DevTools打开时),如下所示:

目前这是默认的"首选项" 选项卡.您可能需要向下滚动.自提出此问题以来,此复选框已至少移动了几次.最后我查了一下,它位于底部的中间栏.如果您在较薄的屏幕上打开并且"首选项"下有2列,则它可能位于右上角附近.如果更改或评论,请随时更新此帖子,我将更新帖子.

在此输入图像描述

  • 这与在F12 Chrome Devtools上直接检查"禁用缓存"一样,并且在重新启动Chrome时会重置. (2认同)

Arv*_*and 18

而不是击中"F5"只需点击:

"Ctrl + F5"

  • 它也适用于Firefox(不是因为它与这个问题相关,但有人可能觉得它很有用) (6认同)

Bru*_*ser 17

在Canary频道(也许是开发和稳定频道将跟随),这可以作为"一般"部分下左侧的整体第二选项.

在Chrome Canary频道中停用缓存

除此之外,总是可以选择通过Ctrl + Shift + N切换到隐身模式.即使不幸的是,也会结束你的会话.

  • 根据我的经验,这只适用于打开开发工具.我很困惑为什么缓存仍然保留在页面上,直到我意识到我已经关闭了开发工具.设置不会覆盖所有内容,这很奇怪. (4认同)

tom*_*mes 16

使用Ctrl+ Shift+ R刷新很不错,但没有得到我需要的一切.仍然有些东西不会刷新,比如存储在js和css中的数据.找到了一个解决方案:用于Chrome web开发人员的谷歌工具栏.安装工具栏后选择选项和"重置页面".

  • +1.但仍然不完美:为了在本地计算机上进行开发,缓存是完全不必要的并且会引入问题,所以我仍然会对像firebug这样的禁用功能感兴趣. (2认同)

Mas*_*son 15

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

  1. 从浏览器窗口的扳手图标菜单(首选项菜单)中选择工具→开发人员工具

  2. 在显示的开发人员工具UI中,单击右下角的齿轮图标.

  3. 选中"网络"部分中的"禁用缓存"复选框.


jam*_*per 14

仅在启用开发工具时,才能在chrome中禁用缓存


Răz*_*nda 14

在修复错误之前,您可以使用Clear Cache Chrome插件,也可以为其设置键盘快捷键.

安装后,右键单击并转到选项:

http://j.mp/15ZdA6f

检查Automatically reload active tab after clearing data:

http://j.mp/15ZdGLh

选择Everything时间段:

http://j.mp/15ZdPy7

然后你可以去Menu => Tools => Extensions:

http://j.mp/15ZehfX

点击底部的键盘快捷键:

http://j.mp/15Zepft

并设置键盘快捷键,例如Ctrl+ Shift+ R:

http://j.mp/15Zev6M


小智 9

实际上,如果您不介意使用带宽,则由于多种原因更加安全,禁用缓存并被许多安全站点建议.

Chromium不应该傲慢,不能做出决定并对用户实施设置.

您可以使用--disk-cache-dir =/dev/null在UNIX上禁用缓存.

由于这是意外的崩溃可能会发生,但如果他们这样做,那将明确指出一个更严重的错误,应该在任何情况下修复.


Kho*_*Phi 8

这可能对某人有帮助.

我已经操纵了我的Nginx疯狂缓存.因此,禁用网络工具中的缓存并显式清除缓存不起作用.

一个非常简单但又无聊的解决方法是,我只是打开一个新的隐身标签.令人惊讶的是,它始终有效!

隐身模式下的硬刷新功能随时可以在同一模式下重新加载.


sac*_*024 8

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

禁用缓存的网络选项卡

屏幕截图 - 在 Chrome 开发工具中禁用缓存功能

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

未选择禁用缓存

在此输入图像描述

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

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

局限性

  1. 您必须保持 DevTools 打开并禁用缓存处于选中状态
  2. 禁用缓存后,该选项卡中的所有资源都会禁用缓存。如果您只想禁用 1-2 个资源的缓存,它会使事情变慢并且效率低下

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

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

这里的技巧是在每次发出请求时向资源添加一个具有随机值的查询参数。使用请求查询参数规则,您可以添加这样的参数

URL Contains mywebsite.com/myresource.js
Add param cb rq_rand(4)
Run Code Online (Sandbox Code Playgroud)

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

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

在此输入图像描述

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

应用请求规则并添加随机参数以禁用缓存

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

  1. 好处是您不需要为实现此行为而保持开发工具打开
  2. 您可以永久启用此功能,您的浏览体验也不会受到影响。

规则获取方式

如果您已安装 Requestly,则可以使用以下链接浏览和下载规则 - https://app.requestly.io/rules/#sharedList/1600501411585-disable-cache-stackoverflow

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


mbo*_*kil 6

如何更改页面名称以防止页面缓存的书签.在Chrome中,您可以创建新书签,然后将代码粘贴到网址中.单击书签,页面将重新加载时间戳以阻止缓存.

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;})();
Run Code Online (Sandbox Code Playgroud)


Dyn*_*Dan 5

我只是被赶上了,但不一定是因为Chrome。

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

   $.ajax({
        type: 'GET',
        cache: true,
        ....
Run Code Online (Sandbox Code Playgroud)

将其设置为false可解决我的问题,但这并不理想。

我不知道这些数据保存在哪里,但我确实知道chrome从未在服务器上发出过请求。


Luf*_*fle 5

现在有一种更好,更快捷的方法(Chrome 59.xx版):

右键单击重新加载图标(URL字段的左侧),您将获得一个下拉菜单,选择第三个选项:“空缓存和硬重新加载”。

仅当开发人员工具打开时,此选项才可用。(请注意与选项2:“硬重载” -cmd-shift-R的区别)。这里没有缓存清空!