首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >部署后强制缓存刷新

部署后强制缓存刷新
EN

Stack Overflow用户
提问于 2012-01-20 06:12:12
回答 3查看 61.8K关注 0票数 22

如果无法更改引用该文件的URI (例如,无法添加时间戳param),是否有办法强制客户端缓存重新加载HTML文件?

以下是我的情况:

  • 部署到1000个用户的插件
  • 这个插件加载example.com/page.html,它调用script.js
  • 无法更改资源URI example.com/page.html (w/o插件更新)
  • page.html已经改变了。我需要从用户缓存中清除旧的page.html,这样新的page.html才能加载。

有什么想法吗?Htaccess?新旧page.html调用的PHP?

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-20 06:15:26

如果页面已经被浏览器缓存,那么很难告诉它不要使用缓存的版本,因为在确定缓存的版本过时之前,它可能不会再检查一遍。您只需向所有用户发送一封蜗牛邮件,通知他们按ctrl+f5 :)

不过,浏览器至少可以尝试一个HEAD请求来检查修改后的时间戳,然后才能提供缓存的版本。在这种情况下,以下内容将帮助您解决问题。

浏览器使用HTTP标准标头从web服务器协商它们的内容。接下来,如果要告诉浏览器不要缓存文件,则必须发送适当的HTTP头。如果要在PHP中这样做,可以使用header函数向浏览器发送适当的headers:

代码语言:javascript
复制
header('Cache-Control: no-cache');
header('Pragma: no-cache');

如果必须通过HTML完成,您可以在页面标题中执行以下操作:

代码语言:javascript
复制
<meta http-equiv="Expires" content="Tue, 01 Jan 1995 12:12:12 GMT">
<meta http-equiv="Pragma" content="no-cache">

但是,您无法确定浏览器是否会满足您的请求,即它没有缓存页面。还有一些其他的东西,比如eTags和诸如此类的东西,但是坦白地说,如果页面已经被缓存了,我不认为这会对你有所帮助。

更新

来自响应可缓存性上的HTTP1.1规范

如果既没有缓存验证器,也没有与响应相关的显式过期时间,那么我们并不期望缓存它,但是某些缓存可能会违反此预期(例如,当几乎没有或没有可用的网络连接时)。

票数 35
EN

Stack Overflow用户

发布于 2013-02-22 04:08:42

也许可以使用PHP为javascript调用添加时间戳。然后,您可以对duration...........For示例运行以下命令:

check_if_cache_should_be_disabled.php

page.php

票数 4
EN

Stack Overflow用户

发布于 2015-05-02 21:54:16

您可以更改文件名,例如page_v2.html,这将使浏览器将页面加载为新页。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8937447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档