PHP缓存控件没有';似乎不起作用


PHP cache control doesn't seem to work

请查看我的网站:vynora

它还没有结束我在HTML页面的顶部放了一个PHP标题:

<?php if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) ob_start("ob_gzhandler"); else ob_start(); ?>
<?php
  header("Cache-Control: max-age=6000");
?>

当我去谷歌的页面速度,它告诉我应该优化我的浏览器缓存,请看一看:谷歌页面速度

但我已经使用PHP了。那么这怎么可能呢?

问题不在此页面中,也不在PHP脚本中。查看谷歌的建议:

以下可缓存资源具有保鲜期短。指定在中过期至少一周以下资源的未来:

  • http://www.vynora.com/arrow.png(未指定有效期)
  • http://www.vynora.com/bing.png(未指定有效期)
  • http://www.vynora.com/dailymotion.png(未指定有效期)
  • http://www.vynora.com/dd_arrow.gif(未指定有效期)
  • http://www.vynora.com/deviantart.png(未指定有效期)
  • http://www.vynora.com/flickr.png(未指定有效期)
  • http://www.vynora.com/google.png(未指定有效期)

这意味着您应该缓存静态文件
正如我所看到的,您使用的是Apache。在这种情况下,您可以使用mod_expires

例如,您可以在.htaccess文件中添加以下行:

ExpiresActive On
ExpiresDefault "access plus 1 seconds"
ExpiresByType text/html "access plus 1 seconds"
ExpiresByType image/x-icon "access plus 2592000 seconds"
ExpiresByType image/gif "access plus 2592000 seconds"
ExpiresByType image/jpeg "access plus 2592000 seconds"
ExpiresByType image/png "access plus 2592000 seconds"
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType text/javascript "access plus 86400 seconds"
ExpiresByType application/x-javascript "access plus 86400 seconds"

要将页面缓存到用户浏览器中,请添加以下标题:

header("Cache-Control: private, max-age=6000, pre-check=6000");
header("Pragma: private");
header("Expires: " . gmdate("D, d M Y H:i:s"). " GMT");

gZip:

http://www.whatsmyip.org/http_compression/?url=aHR0cDovL3d3dy52eW5vcmEuY29tLw==

称其gzipped

http://redbot.org/?uri=http%3A%2F%2Fwww.vynora.com%2F

称其gzipped

这可能不起作用,因为header()之前可能有空白。这样试试:

<?php 
    if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) {
        ob_start("ob_gzhandler"); 
    } else {
        ob_start();
    }
    header("Cache-Control: max-age=6000");
?>

您也应该设置过期的头,因为旧的浏览器不理解"最大年龄"。

Btw您的服务器当前正在发送"最长期限:0"。