Chrome一直加载我网站的旧缓存

57

我遇到了一个奇怪的问题,我的Chrome浏览器一直在加载一个旧版本的网站,但这个网站的代码已经不存在于我的服务器中了。我认为这是一个典型的缓存问题。

我尝试清除浏览器缓存、使用隐身模式和清除DNS缓存,但旧的缓存页面仍然在加载。

这个问题似乎已经在这个谷歌讨论组上讨论了三年,但仍然没有解决方案。https://productforums.google.com/forum/#!topic/chrome/xR-6YAkcASQ

使用Firefox或其他任何网页浏览器都可以完美地工作。

这不仅发生在我身上。我的所有同事在我的网站上都遇到了同样的问题。


2
是的。我希望Chrome加载服务器上的内容。 - zeroliu
2
我有同样的问题,就好像你必须等待链上的某些东西清除缓存,然后才能看到新版本。我想知道它是什么。 - trueinViso
8
令人惊讶的是,到了2020年,这仍然是一个问题。而标准解决方案是“清除缓存”。我们中有些人经营网站业务,希望在每次更新时不必告诉每个客户都去“清除缓存”,这太糟糕了。另一种解决方法是给每个 js 文件版本控制,但当你使用像 React 这样的框架时,这并不起作用。也许在20年后,这将通过从服务器发送“脏”标志到客户端来解决,正如20年前应该做的那样。 - reactive-core
1
是的,2020年Angular应用程序也有同样的问题!这真是难以置信。 - Beetlejuice
5
2021年了,仍然面临这个问题。尽管在索引页面中拥有所有的元标签,但Chrome仍然加载旧页面。Ctrl-F5可以加载最新的页面。但是在新标签页中打开页面会回到旧版本。 - navigator
显示剩余7条评论
11个回答

16
<?php Header("Cache-Control: max-age=3000, must-revalidate"); ?>
你可以编写一个PHP脚本,该脚本必须是索引文件中的第一行代码。这是Web服务器通常发出的HTTP标头。您还可以重命名被视为“过时”的资源。本教程将为您提供更多详细信息。https://www.mnot.net/cache_docs/

2
即使我们现在使用的是许多版本之后的Chrome,这个答案仍然解决了我们在开发中遇到的问题。另外,只是为了澄清,这个头部可以添加在任何Web服务器上 - 它不是PHP特定的。 - Randall

9

我不确定我是否正确理解了你的问题,但我曾经遇到类似的问题,而且没有清除缓存,而是通过以下方法禁用它:

打开Chrome并访问您的网站 按Command + Option + C(Mac) 现在,您已经打开了Chrome的开发工具,请转到主菜单,其中显示:元素、控制台、资源… 点击菜单中的“网络”元素 确保“禁用缓存”复选框已被选中 然后重新加载页面,不要关闭开发工具 这对我很有用。 如果对您有用,请告诉我 :)


Windows 上的键盘快捷键是 <CTRL><SHIFT>I。 这对我也起作用了。 - Rob Farquharson
这个效果很好。 - undefined

3
一种查看您网站新版本的短期解决方案通常是清除缓存并重新加载,但由于某些原因,这种方法在Chrome上并不总是有效。然而,这种临时解决方案并不能解决每个用户在访问您网站时遇到的问题,它只能让您看到您网站的新版本。
将CSS和JS文件添加版本号可以让您和其他用户看到您网站最新的版本。版本号会强制浏览器不从用户的个人计算机缓存中加载文件,而是从服务器上加载实际文件,如果版本号与用户缓存中的版本号不同。
因此,如果您在服务器上有这些文件:
ExJS.js
ExCSS.css

并将它们更改为:

ExJS.js?v=1.01
ExCSS.css?v=1.01

这些文件的新版本将在任何浏览器中加载。

通常情况下,浏览器总是从服务器加载HTML文件,但有一些HTML元标签可以使用,以确保最新的HTML版本将在任何用户上载入:

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />

还有一些方法可以确保其他语言的文件始终加载最新版本,这在此帖子中讨论了。


1
chrome://settings/siteData 可以删除特定网站的数据。 - Edward Moffett

0
我在将WordPress网站迁移到新的托管时遇到了问题,其中URL重定向到.../wp,这在之前并不是这样的。
尽管DNS已经完全更新了一周,但Chrome仍然会显示旧服务器上的文件日期目录列表。因此,它显然展示了这里讨论的问题。
我添加了一个只包含以下内容的index.html文件:
<meta http-equiv="refresh" content="0; URL='http://my-wp-site.com/wp'"/>

这个解决方案立即解决了问题,包括那些没有清除缓存并且不知道我的任何Google账户的Chrome浏览器。

我不知道为什么这个方法有效,考虑到所有人列出的问题。


0

我遇到了同样的问题,我也尝试在我的JSP页面上禁用缓存

<% response.setHeader("Cache-Control","no-cache");
   response.setHeader("Pragma","no-cache");
   response.setDateHeader ("Expires", 0); %>

但它并没有起到帮助的作用。

这是谷歌Chrome和Chromium浏览器已知的问题,即使您清除缓存和Cookie。

但对于大多数用户来说,可能会发生或不会发生。

自9-10年以来,这个问题一直未能解决。

因此,为了测试目的,强烈建议使用Mozilla Firefox或Opera。

但是,这似乎意味着您的应用程序仅限于某些浏览器以获得最佳体验,并且可能无法令商业/最终用户信服。

但话虽如此,这个缓存问题可能会或可能不会影响我们大多数人。


0
您可以点击检查,然后选择“网络”并勾选“禁用缓存”。

0

更改图像名称并在HTML文件中进行必要的图像名称更改.. 我在我的网站上找到了这个快速解决方案


0

如果您经常在没有www的情况下运行网站,添加CNAME也会有帮助。尝试使用www.example.com将起作用。


0

你可以通过重置Chrome来解决问题。这是我找到的唯一清除此条件的方法 - 在折磨了半天之后。

在找到这个方法之前,我尝试过清除缓存,删除各种缓存目录的内容等,但都无济于事。

[截至2021年5月3日] 您可以通过进入“设置>高级>重置和清理>恢复默认设置”来执行此操作。请注意,这不会删除任何书签,但会注销您登录的所有帐户。


0

我在本地开发中遇到了这个问题,尝试了以下几种方法:

  1. 清除Chrome浏览器中的缓存+所有文件
  2. 设置Cache-Control Header(就像Eli Duhon所提到的)。
  3. 以多种其他方式设置Cache Control Header。

但是唯一解决我的问题的方法是重新启动运行应用程序的docker容器。

所以我做了这个操作:

docker-compose down

然后

docker-compose up

之后一切都更新了。

但是,如果您再次更改,则仍未更新...

因此,这肯定不是解决此问题的方法,因为我甚至不知道第一次发生这种行为的原因,但我认为它可能与热重载和/或Docker有关,但这是唯一解决问题的方法,所以我想在这里提一下...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接