Php

Apache 記憶體有時只有效

  • January 1, 2018

我正在嘗試在我的 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”,它不起作用:輸出總是更改為目前時間。

兩個注意事項:

  1. 當它工作時,我在記憶體的響應中看到一個“年齡”欄位,其中包含自頁面首次提供以來的更新秒數。當它不起作用時,響應中沒有“年齡”欄位。
  2. 我在根目錄中沒有 .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

引用自:https://serverfault.com/questions/890139