【问题标题】:clear cache of clients browsers when making changes进行更改时清除客户端浏览器的缓存
【发布时间】:2018-04-27 04:45:27
【问题描述】:

使用 HTML/CSS 开发网站时,在开发阶段防止缓存是有意义的,因为浏览网站的人会看到旧版本。在使用元标记之前,我已经看到了这方面的线程,即:

<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />enter code here

但是,这似乎适用于 HTML5,同样我只想在我进行更新后将客户端缓存清空。

例如,如果我在 index.html 中有一个图像并更新此图像(相同的文件名不同的内容),那么客户端将看到以前的图像

有没有一种方法可以对 html 页面进行版本控制,以便客户端浏览器缓存版本 1,然后在重新加载时如果我将 html 更改为版本 2,缓存将被清空并加载包含所有更改的新网站?

似乎在大多数 Web 开发中都需要如此,否则客户将永远看不到变化

【问题讨论】:

  • 为了澄清这一点,如果我加载mysite.co.uk,我会在 index.php 中获得旧版本的缓存版本。如果我加载mysite.co.uk?q=1,我会得到我期望的更新版本(显然是因为它是一个新的 url,所以没有为它存储缓存)

标签: html caching browser-cache


【解决方案1】:

您可以在索引页面中编辑&lt;link&gt; 文件(或在文件中加载的任何位置。在.css 之后,您需要输入类似?v=...的查询

像这样:

旧文件:&lt;link href="/css/TestFile.css" rel="stylesheet"&gt;

编辑后刷新缓存:&lt;link href="/css/TestFile.css?v=1" rel="stylesheet"&gt;v代表版本,可以使用任意字符。

这将为访问该网站的每个人重置缓存并让他们看到新版本而不是旧版本

【讨论】:

  • 感谢您的建议,这适用于 CSS,但是嵌入在 html 中的带有 标签的图像(即资源缓存)呢?
  • 如果我是正确的,你可以使用同样的东西。
  • 看起来好像整个 index.html 页面都在缓存。在常规浏览中显示 但在隐身模式中显示
  • 这种方法可以像使用JS或JQuery一样通过脚本自动化吗?
【解决方案2】:

在您的头部内容中添加以下内容 -

<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" />

【讨论】:

  • 事实并非如此。 index.php 页面正在被缓存。在我原来的帖子中,我提到我已经尝试过类似的解决方案?
【解决方案3】:

就我而言,我对一个特定的 JS 文件进行了很多更改,并且我需要它在所有正在使用的浏览器中处于其最新版本。

我没有此文件的特定版本号,所以我只是散列当前日期和时间(小时和分钟)并将其作为版本号传递:

<script src="/js/panel/app.js?v={{ substr(md5(date("Y-m-d_Hi")),10,18) }}"></script>

我需要每分钟加载一次,但您可以决定何时重新加载。

【讨论】:

  • 与我对下面答案的评论类似,此方法对 index.php / index.html 文件链接的文件有效,但索引文件本身呢。
  • 在你的头部内容中添加以下内容 - @andy-West ` `
猜你喜欢
  • 2017-02-04
  • 2012-01-10
  • 2021-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-26
相关资源
最近更新 更多