0

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

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

以上我很确定仍然检查更新的页面。顺便说一句,如果有人好奇浏览器不能检查新页面的原因是因为网页很大。我不想每天都被重新下载。

4

1 回答 1

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>

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

当然,您也可以在您的 php 文件中将其设置为从请求时间起一个月的时间范围,这样您就不必更新 .htaccess 并且您始终有一个有效期。

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

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

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

许多客户还考虑使用 etag 标头,因此添加很重要,我在每个项目中都使用它。您也可以在 .htaccess 中执行此操作。

FileETag All

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

再见

于 2012-10-14T06:30:36.180 回答