我正在修改一个站点的外观(CSS修改),但是由于恼人的持久缓存,我看不到Chrome上的结果。我尝试了SFIFT +刷新,但它不起作用。
如何临时禁用缓存或以某种方式刷新页面以查看更改?
- 这可能是一个最糟糕的Chrome bug。我浪费了太多时间想知道为什么会出问题,结果却发现——尽管强制完全重新加载了^f5——它使用了一个小时的陈旧资源。
- 浏览器应该缓存。请记住,您的用户也将进行缓存,因此可能看不到您在站点投入生产后所做的更改。避免这种情况的方法是对文件进行版本控制。MysCS.CSS?版本=独一无二的。如果浏览器之前没有看到该版本,则会再次下载该文件。例如,一些独特的东西可能是最后修改的日期。
- @用户984003 Ctrl+Shift+R或Shift+R应该刷新缓存…
- @用户984003您好,您能详细介绍一下如何实现这一点吗?是JS还是PHP?:)我是网页开发领域的新手。
- @用户984003如果我告诉他们不要缓存的话。是的,缓存占用版本号对于最终版本来说是很好的,因为这正是用户所使用的版本号,但是当我构建一个新站点时,我想在构建过程中看到增量更改,我不会每次都更改版本号。因此,我为什么要用火狐开发——它有最可靠的缓存禁用选项!
- 如果我正在做一些繁重的网络测试/更改,我通常只是从终端(Ubuntu)启动:Google Chrome——不认识你,你可以在那里抛出其他有用的标志,比如——全屏测试的信息亭,如果这是一个要求的话。
- @是的,浏览器应该缓存…浏览时。发展时,你需要更多的控制。
- 浏览器在重新加载页面时不应该缓存。这就是为什么重新加载页面。没有其他浏览器会忽略该用户请求。
- 至少不是我浪费了很多时间来调试由于缓存内容而过时的代码…
- 真的很烦人。我总是打开"历史记录"选项卡,在更改.css或.js文件后必须删除缓存。并且得到这个-图像不断得到缓存,即使在那之后!!我必须使用文件管理器,转到缓存和媒体缓存并手动删除它,才能真正重新加载图像!
chrome devtools可以禁用缓存。
右键单击并选择Inspect Element打开devtools。或者使用以下键盘快捷键:
- F12
- Mac上的XYKBCOMand+option+
- Windows或Linux上的control+shift+i
单击工具栏中的Network打开网络窗格。
选中顶部的EDOCX1[2]复选框。
请记住,正如@chromiumdev的tweet所述,此设置仅在devtools打开时才有效。
请注意,这将导致重新加载所有资源。如果您希望仅对某些资源禁用缓存,则可以修改服务器随文件发送的HTTP头。
如果不想使用Disable cache复选框,长按devtools打开时的刷新按钮将显示一个菜单,其中包含Hard Reload或Empty Cache and Hard Reload选项,效果应该类似。了解选项之间的差异。以下快捷方式可用:
- Mac上的command+option+r
- Windows或Linux上的control+shift+r
- 根据我的经验,此设置(以及该面板上的所有设置)只在DEV工具打开时生效。
- 我不认为那是真的。如果我在我正在处理的网站中缓存一个方法,我总是得到200比304。
- 我在Mac的Chrome 19.0.1084.46上找不到这个。我在command-option-i inspector中没有看到"常规"部分。仅限于元素、资源、网络、脚本、时间线、配置文件、审核、控制台和搜索。???
- @超级真还在Mac上的网络下吗?
- @史蒂夫和用户代理一起尝试。选择"覆盖用户代理"设置,然后在dev tools打开和关闭的情况下访问whatsmyuseragent.com。证据二是在本地运行一个网站,在一段时间内高速缓存,然后停止服务器。关闭dev tools(即使在选中了"disable cache")之后,您的页面仍将被加载,直到您打开dev tools为止。不幸的是,我在任何地方都找不到这个文档,这只会让我更加沮丧。
- 这只会禁用当前网站的缓存,对吗?
- @史蒂夫,这对我不管用。虽然我有Chrome19.0.1084.52,但我没有得到任何更改,我选中了该框以禁用缓存。我试着打开开发面板。我试着把它关上。我甚至尝试重新启动浏览器,然后重新启动计算机。它似乎仍在继续为我提供页面的缓存版本。我该怎么办?Chrome以前也给过我这样的问题,所以我从电脑上删除了与Google相关的所有内容,然后重新安装了Chrome。它修复了大多数事情,比如"永久加载历史记录"选项卡。我想还是不行。
- @tgwizman你知道如果你收到200个请求,而不是304个请求,它是有效的。我建议你不要在开发过程中做一些愚蠢的事情,比如在你没有编辑的页面上点击F5或者在其他地方复制一份。;)
- @史蒂夫谢谢你的帮助,但事实上,不是我错了。我更新到20了。不管怎样,现在一切正常!事实上,我对Chrome的所有问题都消失了!!!!^-^我建议其他人也这么做。让你保持最新!
- MAC的命令移位-R=|
- 这就是钥匙……"只有当devtools可见时。"
- 我发现在更改设置后刷新当前页面时,这不起作用。只有当我离开然后又回来的时候,它才开始工作。
- 这可能是Chrome32/OSXMaverick的问题吗?在我的Mac上根本没有缓存刷新。我必须关闭并重新打开Chrome…
- @我对Chrome32和Mavericks也有同样的问题。你在用妈妈吗?如果是这样,则需要根据此处的答案禁用[OPCache]:stackoverflow.com/a/19472156/1114876
- 这对我也不管用。我在Windows7,Chrome32上。我试过不插接面板,但没有运气?!我正在测试的页面使用iframes,所以这可能是导致问题的原因?我很确定我正在刷新同一个页面,该页面已被编辑。我当前的解决方法是"硬加载",但它将我移动到主页,我必须再次导航:(
- 这在某种程度上对我有效,但不再有效。除非在离开页面时手动清除缓存,或者在新的匿名窗口中打开页面,否则无法正确刷新页面。我在Mac上使用Chrome。有人知道是否有修复方法,是否有损坏或其他原因吗?谢谢!
- 即使选中了"禁用缓存",我也看到了一些内容(来自缓存):evernote.com/shard/s310/sh/0f651721-829d-4bb3-bfb-8ceb3ef6b‌&8203;020/…
- 不适用于本地文件。
- …或者您可以在匿名模式下进行调试!(不缓存任何文件)
- 这种设置是Web开发历史上最大的谎言。重新启动我的电脑,当火狐显示最新的CSS时,Chrome仍然显示错误的结果:(
- 灿烂的。只是我需要的。多谢。
- 在选中dev tools open and disable cache选项的情况下,我一直都会遇到这个问题。我确信它不能像@vbence建议的那样使用本地文件,或者它是一个谎言。我建议使用其他方法清除缓存。
- 实现这个线程是非常古老的,但是这个功能仍然是必需的,所以下面介绍如何使用现代的chrome devtools(至少对于Mac):打开devtools单击右上角的3点。选择"网络"下的"设置",切换"禁用缓存"(devtools打开时)*注意:根据我的经验,某些类型的媒体文件(.mp4)特别棘手,往往需要退出Chrome(不只是关闭窗口,而是右键单击Chrome的图标)并重新启动。
- 请注意,有时插件/加载项可能会干扰缓存。始终在空白会话上测试。
- 我间歇性地遇到这样的问题:不遵守设置,也不遵守chrome首选项下的设置,直到我手动清除浏览器缓存,关闭整个浏览器并重新打开它。有时,无论出于什么原因,它都拒绝接受无缓存设置。为什么会这样做,为什么有两个地方的环境存在,似乎都没有连贯性优先是超越我。
- 你统治了这一天,谢谢你的回答
- 如何知道"禁用高速缓存"功能是否有效?
当您需要每小时清除缓存30次时,清除缓存太麻烦了。所以我安装了一个称为经典缓存杀手的Chrome扩展,它可以在每次页面加载时清除缓存。
Chrome商店链接(免费)(现在没有恶意软件!)
现在我的模拟JSON、JavaScript、CSS、HTML和数据在每次页面加载时都会刷新。
如果我需要清除我的缓存,我从不需要担心。
我找到了大约20个缓存清洗器,但这一个看起来很轻,而且不费吹灰之力。在更新中,缓存杀手现在可以保持"始终开启"。
注意:我不知道插件的作者。我发现它很有用。
- 缓存杀手是很棒的。+ 1
- 这是最好的答案。因为我们中的许多人没有能力打开开发工具。我使用phpstorm,它只有在dev工具关闭时才有实时更新。所以我只在调试时使用它…
- 我同意最佳答案。我每天使用这个扩展来开发Web。很高兴能够在开发时完全关闭缓存,然后打开它进行测试。高度推荐。
- 是的,chrome dev工具选项似乎不适合我。但高速缓存杀手的工作方式很迷人。像4-5x一样,重新加载时间明显较慢,但实际提供新内容的速度明显快得多。
- 清除缓存和禁用缓存仅在本地主机和我的Mac上工作时才起作用。对于在线内容,我希望看到任何变化。这是一个救命恩人。
- 我发现使用禁用缓存会导致本地存储出现问题,特别是Auth0的角度存储。缓存杀手完美工作,不会导致本地存储问题。
- 铬合金对我来说不是很好。这导致了一些副作用,比如加载两次我发现的图像,很难找到这个扩展的问题。
- 这个不可思议的延伸!与Angular JS Ngrote合作是一件痛苦的事。+ 1
- + 1。缓存杀手让我的生活比大多数事情都好。但是,在OSX(Mac)上,它不会刷新选项卡中出现的favicon,除非使用了cmd-r。我不知道为什么。
- !!!!谢谢您!!!!(为什么我没想到这个?)
- 最好的答案。
- 我想这个插件已经从网上商店里删除了。我如何手动安装它,以及它被删除的原因?
- 由于cachekiller的chrome store url已关闭,请使用此url下载crx文件,然后将该文件拖到chrome扩展窗口中进行安装:crx4chrome.com/extensions/jpfieopdmepaulggioebjmedclkbap
- 仍然是2017年最好的答案!+ 1
- 由于恶意软件,已从Chrome扩展存储中删除:(备选方案?
- Leddit Reddit.com/r/webdev/comments/6d4tms/…的奇迹只是没有关于许可证等的线索,所以不知道这是否成立。
- @珍妮万德-你是我们需要的英雄!
- 最后写了我自己的,工作原理一样,但可以切换每个标签。麻省理工的执照,没有恶意软件,我保证??!github.com/themichaelyang/cache-clear
按f12,然后(在控制台打开的情况下)打开chrome developer控制台:
在浏览器顶部的"重新加载"按钮上单击鼠标右键(或按住鼠标左键),然后选择"清空缓存和硬重新加载"。
这将超越"硬加载"完全清空缓存,确保通过javascript或其他方式下载的任何内容也将避免使用缓存。你不必乱动设置或任何东西,这是一个快速的单镜头解决方案。
- 这仅适用于Windows Afaik的Chrome
- @不,它在Linux上也适用于我。
- 不过,它在Mac电脑上肯定不起作用,我点击了带有各种组合键的重新加载按钮;)
- 什么是硬加载?
- @manirazss:它将重新加载所有内容并避免使用缓存,但在页面加载后不会重新下载由javascript下载的内容。我不知道为什么有人会用它,但我想你可以想出一些角落的情况,它将是有用的。
- 它也不会清除页面内iframes的缓存。
- 不确定这是真的,但是从chrome 41开始,只要打开开发者工具窗口,单击并按住"重新加载"按钮就可以在OSX上工作。
- FTR也适用于Linux的Chromium。
- 在马科斯塞拉为我工作
- 我怎么不知道这条捷径?到目前为止,我不得不使用扩展等。
- 令人惊叹的!在OSX上为我工作
还有两个选项可以在Chrome中禁用页面缓存:
1。在注册表中停用chrome缓存
打开注册表(start->command->regedit)
搜索: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"
重要:
在铬…exe之后有一个空间和连字符。
离开路径到Chelmi.EXE,因为它是
如果你抄这行,一定要检查,如果引文是实际引文。
2。通过更改快捷方式属性禁用Chrome缓存
右键单击Chrome图标并在"上下文"菜单中选择"属性"。向路径添加以下值:EDCOX1×3
例子:"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" –disk-cache-size=1
重要:
- 使用代码标签使您的答案更具可读性。我认为这可能是最好的答案之一。
- 好答案。尽管对于大多数人来说,禁用缓存只是开发过程中的一件临时事情。永久禁用它会显著降低正常浏览体验的速度,这有点不利于互联网公民身份,因为它会给您访问的Web服务器带来不必要的负载。
- 我不同意糟糕的互联网公民身份问题,我们在这里讨论的是为开发人员工作创建一些捷径。所以这绝对是最好的答案。只是一件小事。每次我把它从这个页面复制到Windows上的某个Chrome快捷方式中,有些字符就出现了问题。这些是正确的:"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-application-cache --media-cache-size=1 --disk-cache-size=1,在"%1"之前的字符是什么?我不知道。
如果您不想编辑Chrome的设置,您可以对相同的结果使用匿名模式。
- 我不明白为什么我之前没有想到这个解决方案…好极了!
除了禁用缓存选项(通过开发人员工具窗口右下角的一个按钮——工具开发人员工具,或CtrL+shift+)外,在开发人员工具的网络窗格上,您现在可以右键单击并从弹出菜单中选择"清除缓存"。
F12打开Chrome DevTools
打开DevTools设置的F1
检查禁用缓存(DevTools打开),如下所示:
这是当前的首选项选项卡,这是默认的。您可能需要向下滚动。这个问答箱已经被移动了至少几次,因为这个问题被问及。最后我检查了一下,它在底部的中间柱上。如果你在一个更薄的屏幕上打开它,在偏好下有2列,它可能在右上方。随时更新这个帖子,如果它改变或评论,我会更新帖子。
- 这和直接在f12 chrome devtools上检查"disable cache"一样,当您重新启动chrome时,它会重置。
在金丝雀频道(也许DEV和稳定频道将跟随)这将被发现是第二个选项,总体上在左手边的"一般"部分下。
除此之外,还可以通过ctrl+shift+n切换到匿名模式。尽管很不幸,这也会结束您的会话。
- 在我的经验中,这只在DeV工具打开时起作用。我很困惑为什么缓存仍然保存在页面上,直到我意识到我已经关闭了DEV工具。奇怪的是,设置并没有覆盖所有的东西。
- 不幸的是,隐姓埋名模式会缓存一些图像和文件。
而不是点击"F5"刚刚击中:
"Ctrl + F5"
- 它也可以在Firefox中使用(不是因为它与这个问题相关,但是有人会发现它很有用)
要清除,chrome中的禁用缓存复选框(这里是v17,但我相信v15)不在主设置界面中。它位于开发人员工具设置用户界面中。
从浏览器窗口的扳手图标菜单(首选项菜单)中,选择工具→开发人员工具。
在出现的开发工具UI中,单击右下角的齿轮图标。
检查网络部分中的"禁用缓存"复选框。
使用ctrl+shift+r进行刷新很好,但并没有得到我需要的一切。还有一些东西不会刷新,比如JS和CSS中存储的数据。找到了一个解决方案:为ChromeWeb开发人员提供的Google工具栏。安装工具栏后,选择"选项"和"重置页面"。
- + 1。虽然还不够完善:在本地计算机上开发缓存是完全不必要的,并且会引入问题,所以我仍然会对像Fibug这样的禁用功能感兴趣。
- CODE.GoGoL.COM/P/ChurmiM/Simuls/细节?ID=45516
禁用chrome中的缓存仅在打开dev工具时有效
- 是的,你是对的。知道为什么吗?
- 可能是一个bug,也可能是只针对开发人员的,这意味着我认为非开发人员也会使用disable cache选项&175;()175;
在修复错误之前,您可以使用clear cache chrome插件,也可以为其设置键盘快捷方式。
安装后,右键单击并转到选项:
http://j.mp/15zda6f
检查Automatically reload active tab after clearing data:
http://j.mp/15zdglh
选择Everything作为时段:
http://j.mp/15zdpy7
然后你可以进入菜单=>工具=>扩展:
http://j.mp/15zehfx
单击底部的键盘快捷键:
http://j.mp/15zepft
并设置键盘快捷方式,例如ctrl+shift+r:
http://j.mp/15zev6M
实际上,如果您不介意使用带宽,那么出于多种原因禁用缓存会更安全,许多安全站点都会建议这样做。
Chromium不应该傲慢到做出决定并强制用户设置。
可以使用--disk cache dir=/dev/null禁用UNIX上的缓存。
因为这是意外的崩溃可能会发生,但如果他们这样做,那将清楚地指出一个更严重的错误,应该在任何情况下加以修复。
这可能对某人有所帮助。
我已经安装了我的nginx疯狂缓存。因此,在网络工具中禁用缓存和显式清除缓存不起作用。
一个非常简单却又无聊的解决方法是,我打开一个新的匿名标签。令人惊讶的是,它一直都在工作!
在匿名模式下的硬刷新可以在我希望以相同模式重新加载的任何时候进行此技巧。
用书签来改变页面名称以防止页面缓存怎么样?在chrome中,您将创建一个新书签,然后将代码粘贴到URL中。单击书签,页面将用时间戳重新加载以阻止缓存。
1
| 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;})(); |
我只是被抓住了,但不一定是因为铬。
我正在使用jquery发出Ajax请求。我在请求中将cache属性设置为true:
1 2 3 4
| $.ajax({
type: 'GET',
cache: true,
.... |
将此设置为"错误"可以解决我的问题,但这并不理想。
我不知道在哪里保存这些数据,但我知道Chrome从来没有请求服务器。
现在有更好更快的方法(Chrome版本59.x.x.):
右键单击"重新加载"图标(URL字段左侧),您将看到一个下拉菜单,选择第三个选项:"空缓存和硬重新加载"。
此选项仅在开发人员工具打开时可用。(注意选项2的区别:"硬重新加载"-cmd-shift-r)。这里不能清空缓存!
Chrome Web Store中有一个名为clear cache的Chrome扩展。
我每天都用它,我认为它是一个非常有用的工具。您可以使用它作为重新加载按钮,并可以清除缓存,如果您还喜欢cookie、区域设置存储、表单数据等,还可以定义在哪个域上发生这种情况。所以只需在你选择的域名上按"重新加载"按钮就可以清除所有这些垃圾。
非常非常好!
您还可以在选项中为此定义键盘快捷方式!
另一种方法是以匿名模式启动Chrome窗口。在这里,缓存也应该被完全禁用。
- 找不到定义在哪个域上执行该操作的选项。看起来不太好。chrome.google.com/webstore/detail/cache killer/…..怎么样?
- 转到浏览器中的ClearCache图标,右键单击,选项,然后在cookies下。有一个小设置图标。
我的第三个chrome扩展页面大小检查器提供了一个禁用缓存的选项,它与devtools完全一样禁用缓存。
此外,该扩展还可以方便地报告网页大小、缓存使用情况、网络请求和加载时间。加上它在Github的开放源代码。
我也有同样的问题,我试过:
然后我发现,不推荐对非https站点使用.appcache清单。我在HTML标记中删除了site.appcache文件及其引用,现在我看到了每个页面的最新版本!
如果您正在使用ServiceWorkers(例如:对于渐进式Web应用程序),您可能也需要在dev tools中的application>service workers下检查"update on reload"。
不确定使用的是什么,但如果使用的是ASP.NET,则可以执行以下类似于魅力的操作:
1
| <link href="@Url.Content("~/Content/Site.css") [email protected]" rel="stylesheet" /> |
基本上,每次运行文件时,它都会自动将日期和时间追加到文件末尾,这意味着由于文件名在技术上有所不同,因此您将不必担心再次缓存它。
- 当然。我使用了这个和条件编译,所以它不会出现在测试和发布版本中。
- 正是它的魅力。
- 更好的方法是使用CSS文件修改时间作为变量值。该解决方案也可用于生产环境。它只是起作用了:)不确定它是如何在ASP中完成的,但在PHP中是这样的"rel="样式表">
How can I disable the cache temporarily or refresh the page in some way that I could see the changes?
不清楚你指的是哪个"缓存"。浏览器可以持久地缓存内容,有几种不同的方法。web存储是其中之一,Cache-Control是另一个。
一些浏览器也有一个Cache,与服务人员一起使用,创建提供离线支持的渐进式Web应用程序(pwa)。
清除PWA的缓存
1
| self.caches.keys().then(keys => { keys.forEach(key => console.log(key)) }) |
要列出缓存键的名称,请运行:
1
| self.caches.delete('my-site-cache') |
按名称删除缓存键(即my-site-cache)。然后刷新页面。
如果刷新后在控制台中看到任何与工作相关的错误,则可能还需要注销已注册的工作人员:
1 2 3 4 5 6
| navigator.serviceWorker.getRegistrations()
.then(registrations => {
registrations.forEach(registration => {
registration.unregister()
})
}) |
我已经使用了上面描述的其他选项,但我发现最好是将以下参数添加到chrome.exe的启动中。
"C:Program Files(x86)GoogleChromeApplicationChrome.exe"--磁盘缓存大小=1-媒体缓存=1
我发现不禁用媒体缓存是一个好主意,但为了完整起见,它在这里。
实际上,我希望有一个选项可以完全禁用缓存,将内存用于IO而不是磁盘(这也会使加载时间加快10倍!)但我认为Chrome或其他浏览器还没有这个选择。
从版本50(如果我记得正确的话)开始,"禁用缓存"选项就从devtool设置中删除了。转到"网络"选项卡,这里有"禁用缓存"选项。
嘿,如果您的站点正在使用PHP,那么请在HTML页面的开头放置以下小PHP代码段:
1 2
| //dev versioning - stop caching
$rand = rand(1, 99999999); |
现在,无论您在脚本或链接元素中加载CSS或JS等资源,您都可以在附加"?"后将生成的随机值附加到请求URL。通过php到uri:
就是这样!将不再有浏览器缓存您的网站-无论哪种。
当然,在发布之前删除代码,或者简单地将$rand设置为空字符串,以再次允许缓存。
将这串代码添加到您的中,它就可以做到这一点。
1
| <meta name="robots" content="noarchive"> |
我当时的情况是浏览器从磁盘加载缓存数据,即使我检查了它禁用缓存(我使用的是chrome)。我所有的CSS和JS都是从服务器加载的,而不是从网页加载的。这发生在我的本地和生产上。
要修复它,我需要在我的URL中添加一个额外的参数,以强制浏览器从服务器获取网页,甚至控制器也不需要它。
我使用的是ASP.NET,下面是我的示例
1 2 3 4 5 6 7
| //Controller function
public ActionResult Index()
{
return View();
}
//Link
@Html.Action("Index","Home", new { ts = DateTime.Now.Ticks.ToString()}) |
结果是,它会生成一个链接:HTTP://www. MyWeb.COM/HOME/HORD?TS=636558555408282209
这是我的处境和解决办法。希望能帮助别人。
Chrome的缓存杀手是目前最好的选择。由于要安装缓存杀手的存储URL已关闭,您可以在此处下载CRX文件:
https://www.crx4chrome.com/extensions/jpfiepodmepaulggioebjmedmclkbap/
下载扩展名文件后,打开chrome->more tools->extensions,然后将crx文件从文件资源管理器或桌面(取决于下载文件的位置)拖动到chrome窗口以安装扩展名。
我使用(在Windows中)ctrl+shift+delete,当chrome对话框出现时,按Enter键。这可以配置为每次执行此序列时需要清除的内容。在这种情况下,不需要打开开发工具。