由于缓存的原因,网站html不会为用户更新

由于缓存的原因,网站html不会为用户更新,html,caching,browser-cache,Html,Caching,Browser Cache,我正在制作一个网站,我的用户遇到了一个网站缓存问题。我开发了我的网站,并设置了chrome开发者工具来禁用我的网站开发缓存。问题是,当我发布一个新的更改以促使我的所有用户由于浏览器缓存而无法获得更新时。当我在朋友电脑上手动删除我网站的缓存时,它可以工作,但我显然不能期望每个人都这样做来获得新的更新。我是否可以通过版本控制或其他方法来解决这个问题?我环顾四周,但似乎什么也找不到 编辑:我知道我完全可以阻止缓存,但我不想完全阻止看似糟糕的缓存设计缓存的资源是什么?我怀疑是js/css文件,处理这个问

我正在制作一个网站,我的用户遇到了一个网站缓存问题。我开发了我的网站,并设置了chrome开发者工具来禁用我的网站开发缓存。问题是,当我发布一个新的更改以促使我的所有用户由于浏览器缓存而无法获得更新时。当我在朋友电脑上手动删除我网站的缓存时,它可以工作,但我显然不能期望每个人都这样做来获得新的更新。我是否可以通过版本控制或其他方法来解决这个问题?我环顾四周,但似乎什么也找不到


编辑:我知道我完全可以阻止缓存,但我不想完全阻止看似糟糕的缓存设计

缓存的资源是什么?我怀疑是js/css文件,处理这个问题的一个好方法是在这些资源的路径中添加一个带有版本的查询参数,以便在版本更改时强制浏览器加载新文件,类似这样:

<script type="text/javascript" src="your/js/path/file.js?v=1"></script>
<link href="/css/main.css?v=1" media="screen,print" rel="stylesheet" type="text/css">

当您发布网站的新更新时,请按以下方式替换该版本:

<script type="text/javascript" src="your/js/path/file.js?v=2"></script>
<link href="/css/main.css?v=2" media="screen,print" rel="stylesheet" type="text/css">
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">

浏览器将显示该文件为新文件,并更新缓存。希望这有帮助

要禁用html缓存,可以按如下方式向文件中添加元标记:

<script type="text/javascript" src="your/js/path/file.js?v=2"></script>
<link href="/css/main.css?v=2" media="screen,print" rel="stylesheet" type="text/css">
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">

但是,这将完全禁用具有此元标记的html文件的缓存,我不认为有一种方法可以像处理js/css文件那样轻松地处理此问题,但是您可以设置元标记以在将来刷新html。下面是一篇文章,描述了如果您需要更多信息,如何使用该元标记:


您可以强制页面在一定时间或其他条件后自动重新加载

或者让它更受事件驱动:


您应该能够根据您的特定需要操作这些解决方案。

一些开发人员将代码注入到他们的.htaccess文件中,以缓存图像、.css和.js文件。 如果您做过类似的事情,考虑删除这些代码行,或者在每行前面加上“#”注释

如果你不知道我在说什么

#缓存常用文件(评论.htaccess文件)
标题集缓存控制“最大年龄=2592000,公共”
标题集缓存控制“最大年龄=2592000,公共”
标题集缓存控制“最大年龄=2592000,公共”

缓存资源是防止重复从服务器下载资源的好方法。但是,如果您正在对网站进行更改,我建议只有在最终版本发布后才进行缓存

您可以更改CSS文件的名称。我通常在结尾加一个数字。然后清除服务器上的缓存。只需确保将所有标题链接中的链接更改为css文件。

只有很少使用浏览器的用户才能在几个小时以上看到旧文件。有那么紧急吗?可能的帮助:您可以使用构建自动机来自动设置文件名的版本。编辑:这在nodeJS/Gulp上运行。如果您运行automater脚本,该脚本将缩小代码,更新文件版本,然后您可以推送到服务器。@isherwood我看到用户在更新结束后4天内获得旧页面。链接域已更新。这是像谷歌和facebook这样的官方网站使用的方式吗?