【问题标题】:Load already live HTML file from server instead of browser cache从服务器而不是浏览器缓存加载已经存在的 HTML 文件
【发布时间】:2020-02-10 09:58:50
【问题描述】:

我有一个实时网站,但由于变化总是存在,我需要用户查看最新的 HTML 文件,即从服务器而不是浏览器缓存加载文件。

当这个网站上线时,我不知道:

<meta http-equiv="Cache-control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">

我已在必要时使用 HTML、CSS、jQuery 和 PHP 制作我的网站。

如何使网站直接从服务器加载?

【问题讨论】:

  • 你不能用那些meta标签更新html吗?如果没有,你能更新什么?
  • @IraklisGkougkousis 我用元标记更新了 HTML 代码,但由于我的缓存中已经有页面,新的 HTML 代码(带元标记)没有运行。我可以简单地努力刷新和工作,但用户不会知道或不会这样做。
  • 如果您还可以访问服务器的配置,缓存控制标头也可以提供帮助:developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control
  • @LaurentS。这对我来说是新的,我会调查一下谢谢。
  • @LaurentS。除了你之前的建议,还有其他方法吗?

标签: javascript jquery html server browser-cache


【解决方案1】:

我使用元标记更新了 HTML 代码,但是由于我的缓存中已经有该页面,因此新的 HTML 代码(带有元标记)没有运行。我可以简单地努力刷新和工作,但用户不会知道或不会这样做。

如果您需要强制每个人的浏览器重新加载一个普通的.html 页面,您可以将'Cache-Control` header 添加到您的网络服务器配置中:

Nginx

location ~* \.(html)$ {
 add_header Cache-Control "no-cache, no-store";
}

阿帕奇

<filesMatch ".(html)$">
    Header set Cache-Control "no-cache, no-store"
</filesMatch>

但是,如果更改位于您的 .html 页面正在加载的文件中,例如 .js .css,您可以使用这种“缓存清除”技术:

script.css?v=1.0 // This is the URL for release 1.0
script.css?v=1.1 // This is the URL for release 1.1
script.css?v=1.2 // etc.

这将强制浏览器加载新文件。

【讨论】:

  • 嘿,我知道这种技术,但更改不在脚本或 css 文件中。
  • 我已经更新了我的答案,包括发送 Cache-Control 标头的方法,如果您有权访问您的网络服务器配置,该标头应该使浏览器请求干净的版本。
  • 我正在使用 cPanel 服务器,需要深入挖掘,谢谢!
  • 在您的服务器 webroot 目录中创建一个 .htaccess 文件,其中包含:Cache-Control: "no-cache, no-store"
  • 谢谢,我会调查的。
【解决方案2】:
<meta http-equiv=“Pragma” content=”no-cache”><meta http-equiv=“Expires” content=”-1″><meta http-equiv=“CACHE-CONTROL” content=”NO-CACHE”>

试试这个。但是当您强制站点从服务器而不是缓存加载时,您会影响性能。因此,在将这些元标记添加到您的网站之前,请先问问自己这是否真的有必要并且值得网站因此而遭受的性能损失。

【讨论】:

  • 嗨 Lakshmi,正如我的问题中提到的,我已经知道元标记,问题在于已经打开网站的用户(没有元标记的代码),他们的代码不会被更新,因此元标记将不起作用。
猜你喜欢
  • 2016-11-27
  • 2019-04-10
  • 2013-01-09
  • 2016-10-26
  • 1970-01-01
  • 2021-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多