【问题标题】:PHP cache script won't cache the php-filePHP 缓存脚本不会缓存 php 文件
【发布时间】:2012-12-28 09:10:41
【问题描述】:

我正在尝试缓存一个在一个站点上成功的 PHP 文件,但是当我在另一个站点上实现代码时它没有被缓存。我用 Firebug 进行了检查,我得到了一个200 OK 状态,这意味着每次页面刷新时它都会从服务器下载它。

这是我的代码:

$now          = time();
$generatedAt  = gmdate('D, d M Y H:i:s T', $now);
$lastModified = gmdate('D, d M Y 00:00:00 T', $now);
$expiresAt    = gmdate('D, d M Y H:i:s T', strtotime($lastModified) + 8035200);
$maxAge       = strtotime($expiresAt) - strtotime($generatedAt);

header('Last-modified: '.$lastModified);
header('Cache-control: max-age='.$maxAge);

额外信息:

它是从我的另一个站点复制的,我得到了304 NOT MODIFIED 状态,这意味着它确实被缓存了。

此代码位于文件顶部,没有回显或输出,这意味着尚未发送任何标头。

我的 .htaccess 文件也配置正确,我没有指定它不应该缓存 PHP 文件。

【问题讨论】:

  • 您是否在脚本中使用了试图缓存的会话?
  • 脚本中没有会话,我的整个网站也没有
  • 好的。 PHP 喜欢在涉及会话时发送缓存清除标头。您能否检查并查看请求脚本看到的实际标头是什么?拥有它们会很有用,并且会让实际发生的事情变得非常明显。
  • 在header(cache-control)下面还有一个header是:header(content-type)
  • 您可以在 Linux 上使用 curl -I URL 或在 Windows 客户端上使用 Firebug 来读取发送的标头。

标签: php caching


【解决方案1】:

您是否尝试过其他浏览器?至少可以说,Firefox 的缓存是一大堆 *。此外,.htaccess 不是唯一的 - Apache 配置很可能需要对脚本所在目录的 AllowOverride 指令进行一些调整。

另外,尝试使用 Wireshark 观察网络上的内容 - 发送了哪些标头以及真正收到了哪些标头?

【讨论】:

    【解决方案2】:

    我想你应该修复这个Last-modified: 参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-08
      • 1970-01-01
      • 2013-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-13
      相关资源
      最近更新 更多