【问题标题】:No-caching a page不缓存页面
【发布时间】:2015-07-16 11:32:47
【问题描述】:

我需要防止页面缓存,以确保它始终显示最新数据。我通过在页面顶部添加一些 PHP 来做到这一点。

//Set no caching
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

它已经解决了眼前的问题,但我不确定这是否意味着每次都必须重新加载外部脚本。该页面使用 jquery、jquery-ui 和其他一些脚本,因此最好避免重新加载它们,以使连接速度较慢的用户受益。

这些标题是强制重新加载所有内容还是只强制页面上的实际代码?

【问题讨论】:

  • 它不是重新加载静态页面。它唯一的加载php页面。如果你想要缓存静态文件,如 js、css。你可以在 apache 或 web 服务器中添加 headers 以避免重新加载静态文件

标签: php browser-cache


【解决方案1】:

标题适用于您添加它们的文件。这部分是为了安全(您网站上的文件可能来自多个不同的服务器),还因为您可能希望为不同的对象设置不同的缓存设置。

如果您通过 CDN 加载 jQuery,它将使用 CDN 的缓存设置,该设置总是有很长的过期时间。 (CDN 也可能使用 gzip 压缩。)

对于大多数 PHP 站点,除了 PHP 页面之外的所有内容都将直接通过服务器提供,而无需触及 PHP 解释器,因此例如在 Apache 中,您可以使用 mod_expires 来控制某个 @987654323 的文件的缓存设置@(例如图像/jpg 或应用程序/javascript)。

要验证发生了什么,在您的浏览器中,如果您打开开发人员工具并查看“网络”面板,您将能够检查页面上每个对象的缓存设置。

如果您想保证某些东西的新版本 - 例如您刚刚修改的 CSS 文件 - 发送给用户,一种快速简便的方法是添加 a version number to the query string,然后浏览器将始终重新加载它。

【讨论】:

  • 这就是我希望听到的。也很清楚的解释,谢谢。最后一段也是一个有用的建议,我将把它藏起来,以备不时之需。
猜你喜欢
  • 2021-06-04
  • 2014-02-18
  • 1970-01-01
  • 1970-01-01
  • 2011-08-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-30
  • 1970-01-01
相关资源
最近更新 更多