[英]PHP cache control doesn't seem to work
請看我的網站: vynora
它還沒有完成。 我在 HTML 頁面的頂部放了一個 PHP header :
<?php if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) ob_start("ob_gzhandler"); else ob_start(); ?>
<?php
header("Cache-Control: max-age=6000");
?>
當我 go 到 Google 的 pagespeed 時,它告訴我應該優化我的瀏覽器緩存,請看一下: Google pagespeed
但我已經使用了 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 (未指定到期)
- ...
這意味着,您應該緩存static文件。
如我所見,您使用的是 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");
壓縮包:
http://www.whatsmyip.org/http_compression/?url=aHR0cDovL3d3dy52eW5vcmEuY29tLw==
說它的壓縮包
http://redbot.org/?uri=http%3A%2F%2Fwww.vynora.com%2F
說它的壓縮包
這可能不起作用,因為 header() 之前可能有空格。 試試這樣:
<?php
if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) {
ob_start("ob_gzhandler");
} else {
ob_start();
}
header("Cache-Control: max-age=6000");
?>
您也應該設置過期的 header,因為舊瀏覽器不理解“max-age”。
順便說一句:您的服務器當前正在發送“max-age:0”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.