Apache-2.2

正確的過期記憶體控制的正確 Apache 語法是什麼?

  • February 16, 2011

關於動態和靜態記憶體的絕對優化使用的一些問題。

目前,我htaccess的設置如下,我感覺我並沒有真正以正確的方式使用它……我認為你的任何改進建議都是答案!非常感激!

**問題1:**關於我應該改變什麼的任何建議,以便在兩個級別內使記憶體更正確(####動態/####靜態)

**問題2:**這些IF標籤有什麼作用:<IfModule mod_headers.c> ... </IfModule>

是否建議保留?沒有它似乎也可以工作。使用它有速度優勢嗎?

問題 3: 我應該兩者都用ExpiresDefault M7200Header set Cache-Control "max-age=7200"還是兩者都用?


<IfModule mod_headers.c>

   ExpiresActive On
   Header unset ETag
   FileETag None
   Header unset Pragma
   ExpiresDefault M14515200

   ##### DYNAMIC PAGES
   <FilesMatch "\\.(htm|php)$">
       ExpiresDefault M7200
       Header set Cache-Control "max-age=7200"
   </FilesMatch>

   ##### STATIC FILES
   <FilesMatch "\\.(ico|jpg|png|gif|svg|swf|css|js|fon|ttf|eot|xml|pdf|flv)$">
       ExpiresDefault M14515200
       Header set Cache-Control "max-age=14515200"
   </FilesMatch>

</IfModule>

首先回答問題 2,<IfModule> 包裝器在那裡,這樣您的配置仍然可以在不包含 mod_headers 的 Apache 實例上工作(儘管沒有設置標頭的位)。如果沒有包裝器,沒有 mod_headers 的 Apache 實例將在啟動時失敗。

對於問題 3,Web 伺服器同時設置了 Expires 和 Cache-Control 標頭,因為記憶體標頭的歷史很長而且很混亂,覆蓋這兩個標頭是讓盡可能多的最終使用者尊重您的記憶體生命週期的最佳選擇。99% 的情況下,任何一個都足夠了(在這種情況下,您不妨使用 max-age,並將確定從現在起 7200 分鐘後的 CPU 工作負載推送到使用者的瀏覽器而不是您的伺服器)。

對於問題 1,如果您的 .htm 和 .php 頁面確實是動態的(內容取決於使用者是誰或他們在做什麼),那麼您根本不應該允許它們被記憶體。.xml 文件通常由您的程式碼生成,如果是這樣,那麼它們可能應該包含在動態內容中而不是靜態內容中。如果您已採取措施確保它們確實是靜態的,並且您永遠不能在保持相同文件名的同時更改文件的內容,那麼給您的“靜態”文件提供如此長的生命週期是可以的。特別是,如果您更改 JavaScript 或 CSS 文件,那麼使用者將看到意外的結果,具體取決於他們記憶體的內容和未記憶體的內容。

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