缓存整个网页,而不是在一定时间内检查更新的页面?

时间:2012-10-14 05:33:34

标签: html apache http caching

嗯,好吧,这么快的问题。 我的服务器有一个简单的php文件,只更新一个月说。现在我绝对不希望浏览器在一段时间之前检查更新。这可能吗?我的网站专门针对Chrome用户...我有一个apache服务器,我目前在我的php中使用标头标记:

 header("Cache-Control: max-age=25200");

上面我很确定仍然会检查更新的页面。 BTW如果有人好奇浏览器不能检查新页面的原因是因为网页很大。我不想每天都重新下载。

1 个答案:

答案 0 :(得分:1)

你所拥有的并不是一个糟糕的开始,但你可以稍微改进一下,如下:

header("Cache-Control: max-age=2592000 public");

您可以在.htaccess中添加过期的http标头响应:

<IfModule mod_expires.c>
    Header unset expires
    ExpiresActive On
    Header set Expires "Mon, 5 Aug 2013 20:00:00 GMT"
</IfModule>

如果您使用过期,请记住设置特定日期而不是基于访问权限的规则,因为这在动态生成内容中不起作用。这样做的缺点是你必须不时更新它。

当然,您也可以在php文件中设置一个月份的时间范围,这样您就不需要更新.htaccess了,而且总是有一个有效的时间段。

header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + 2592000));

您可以添加pragma缓存规则。许多现代客户不使用它,但许多移动应用程序和验证器使用它。

<FilesMatch "\.(php)$">
    Header set Pragma "cache"
</FilesMatch>

许多客户端也会考虑etag标头,因此添加它很重要,我会在每个项目中使用它。你也可以在你的.htaccess中做到这一点。

FileETag All

最后,如果您的网站经常不更新,那么改善缓存和用户体验的最佳方法就是将您的php生成和html文件发送给客户端。这样,你也有expires标头按预期工作,你可以通过apache或php从服务器端使用压缩。

再见