本文主要介紹如何通過Apache的mod_expires和mod_headers模組設定Apache緩衝策略。
免責聲明:本文檔可能包含第三方產品資訊,該資訊僅供參考。阿里雲對第三方產品的效能、可靠性以及操作可能帶來的潛在影響,不做任何暗示或其他形式的承諾。
mod_expires模組設定
Apache可以通過設定檔的mod_expires模組控制HTTP協議的Expires和Cache-Control頭部資訊。mod_expires模組的主要作用是自動產生頁面頭部資訊中的Expires
標籤和Cache-Control
標籤,從而降低用戶端的訪問頻率和次數,達到減少不必要流量和增加訪問速度的目的。
介紹說明
mod_expires是Apache眾多模組中配置比較簡單的模組,一共有以下三條指令。
ExpiresActive指令:開啟或關閉產生Expires和Cache-Control標籤的功能。
ExpiresByType指令:指定MIME類型文檔的到期時間,例如text/html文檔。
ExpiresDefault指令:所有文檔的預設到期時間。
到期時間的寫法如下。
access plus 1 month
access plus 4 weeks
now plus 30 days
modification plus 5 hours 3 minutes
A2592000
M604800
access plus 1 month、access plus 4 weeks、now plus 30 days和A2592000寫法的意義相同,指到期時間是從訪問時開始計算。
modification plus 5 hours 3 minutes和M604800意義相同,指到期時間是以被訪問檔案的最後修改時間開始計算。
M604800隻對靜態檔案起作用,指令碼產生的動態網頁面不起作用。
配置步驟
啟用mod_expires模組。在Apache設定檔(通常是
httpd.conf
或.htaccess
)中,添加以下指令以啟用mod_expires功能:ExpiresActive On
設定預設到期時間。使用
ExpiresDefault
指令為所有文檔設定一個預設的到期時間。例如,設定6個月後到期:ExpiresDefault "access plus 6 months"
按MIME類型設定到期時間。對於特定類型的資源,可以使用
ExpiresByType
指令分別設定不同的緩衝時間。例如:ExpiresByType image/* "access plus 10 years" ExpiresByType text/* "access plus 10 years" ExpiresByType application/* "access plus 30 minutes"
禁用特定類型資源的緩衝。若要禁止緩衝特定類型資源,如將圖片設定為不緩衝,可將max-age設為0秒:
ExpiresByType image/* A0
使用mod_headers模組設定Cache-Control頭部。mod_headers模組允許你自訂HTTP頭部資訊,包括Cache-Control。例如,你可以設定讓瀏覽器始終驗證緩衝內容:
Header set Cache-Control "no-cache, must-revalidate"
請確保在修改設定檔後重啟Apache服務以使更改生效。以上步驟是基於Apache伺服器通過mod_expires和mod_headers模組來設定緩衝策略的基本方法。
mod_headers模組設定
mod_headers模組配置樣本如下所示,詳細介紹請參考Apache官方網站。
# YEAR
Header set Cache-Control "max-age=2592000″
# WEEK
Header set Cache-Control "max-age=604800″
# NEVER CACHE
Header set Expires "Thu, 01 Dec 2003 16:00:00 GMT"
Header set Cache-Control "no-store, no-cache, must-revalidate"
Header set Pragma "no-cache"
重啟生效
修改配置後,請確保重啟Apache服務使更改生效。使用也以下命令重啟Apache服務:
# 重新載入Apache配置(推薦)
sudo systemctl reload apache2
# 或者重啟Apache服務
sudo systemctl restart apache2
或者對於不使用systemctl
的系統:
# 重新載入Apache配置(推薦)
sudo service apache2 reload
# 或者重啟Apache服務
sudo service apache2 restart