【问题标题】:enforce browser reload强制浏览器重新加载
【发布时间】:2012-11-04 22:27:26
【问题描述】:

我能以某种方式强制执行浏览器重新加载吗? 我已经在使用这个了:

header("Expires: Mon, 2 Jan 2012 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");

但是,如果我更改了我网站中的 JavaScript 代码,我网站的访问者必须手动重新加载页面以获取更新的 javascript。我是否还必须在 .js 文件中发送标头?这个怎么做?

【问题讨论】:

  • 您的 JS 文件多久更改一次?!?
  • 你的问题不清楚。你想在什么事件上重新加载浏览器?意味着当浏览器应该重新加载时会发生什么? But if I change for example JavaScript-Code in my website 是什么意思?这种变化意味着什么?
  • 查看这个问题 强制浏览器重新加载缓存的 CSS/JS 文件的优雅方法是什么? stackoverflow.com/questions/118884/…
  • window.location.reload(true); 将从服务器重新加载页面,但我认为这不是您真正想要做的。如前所述,您可以在查询字符串中使用时间戳或文件版本,甚至在文件名中(使用或不使用 url 重写)。

标签: php javascript caching reload


【解决方案1】:

浏览器在这方面应该会更好,但是改变一下:

<script src="file.js">

到这里:

<script src="file.js?last-modified-time-goes-here">

这样每次都会加载最新的JS文件,不用改文件名!

【讨论】:

  • 一些缓存代理不喜欢查询字符串的方式,如果您可以访问网络服务器,请尝试将时间戳嵌入到文件名中并有重写规则以映射到真实文件。
猜你喜欢
  • 2015-01-05
  • 2013-07-27
  • 2017-12-05
  • 1970-01-01
  • 1970-01-01
  • 2010-12-15
  • 2012-04-27
  • 1970-01-01
  • 2013-05-24
相关资源
最近更新 更多