Php
Apache 記憶體有時只有效
我正在嘗試在我的 Apache 站點上設置記憶體,從基本配置開始,我可以使用瀏覽器測試 PHP 腳本:
CacheEnable disk / CacheRoot /var/www/cache CacheDefaultExpire 3600 CacheMinExpire 3600 CacheIgnoreNoLastMod On CacheIgnoreCacheControl On
但是,它僅在頁面未以某種方式“重定向”時才有效。例如,我在名為“test.php”的根目錄中測試這個簡單的 PHP 腳本:
<?php echo date('h:i:s'); ?>
如果我在瀏覽器中轉到“…/test.php”,它可以工作:第一次訪問後輸出時間不會改變。
如果我轉到“…/test”,它不起作用:輸出總是更改為目前時間。
兩個注意事項:
- 當它工作時,我在記憶體的響應中看到一個“年齡”欄位,其中包含自頁面首次提供以來的更新秒數。當它不起作用時,響應中沒有“年齡”欄位。
- 我在根目錄中沒有 .htaccess 文件,並且我無法找到 Apache 知道在沒有“php”副檔名的情況下提供腳本的位置。當我使用帶有 RewriteRule 的 .htaccess 文件進行測試時,它不會在匹配時記憶體響應。不確定這是否重要。
有任何想法嗎?謝謝!
通常,您需要正確設置記憶體標頭才能使頁面記憶體正常工作。這裡有一篇好文章,這裡有Apache 文件。
總結那篇文章,您要設置 Cache-Control 標頭。你可以設置 etag,但其餘的就像你不應該打擾的 pragma。
Cache-Control: max-age=86400
在 Apache 中,這是通過mod_expires完成的,它的配置類似於這樣。
# enable expirations ExpiresActive On # expire GIF images after a month in the client's cache ExpiresByType image/gif A2592000 # HTML documents are good for a week from the # time they were changed ExpiresByType text/html M604800