好吧,如果页面已经被浏览器缓存,则很难告诉它不要使用其缓存版本,因为它在确定其缓存版本过时之前可能不会费心再次检查。您只需要向所有用户发送一封蜗牛邮件,通知他们按 ctrl+f5 :)
但是,浏览器有可能至少尝试使用HEAD请求来检查修改后的时间戳,然后再提供其缓存版本。在这种情况下,以下内容将为您提供帮助。
浏览器使用 HTTP 标准标头从 Web 服务器协商其内容。接下来,如果您想告诉浏览器不要缓存文件,则必须发送相应的HTTP标头。如果你想在PHP中执行此操作,你可以使用该函数将相应的HTTP标头发送到浏览器:header
header('Cache-Control: no-cache');
header('Pragma: no-cache');
如果必须通过HTML完成,您可以在页面标题中执行以下操作:
<meta http-equiv="Expires" content="Tue, 01 Jan 1995 12:12:12 GMT">
<meta http-equiv="Pragma" content="no-cache">
但是,您无法确定浏览器是否会尊重您的请求,即它不会缓存页面。还有其他一些东西,如eTags等等,但坦率地说,如果页面已经缓存,我认为这不会帮助你。
更新
来自 HTTP/1.1 关于响应可缓存性的规范:
如果既没有缓存验证程序,也没有与响应关联的显式过期时间,则我们不希望缓存它,但某些缓存可能会违反此期望(例如,当几乎没有或没有可用的网络连接时)。