設(shè)置Apache緩存策略
本文主要介紹如何通過Apache的mod_expires和mod_headers模塊設(shè)置Apache緩存策略。
免責(zé)聲明:本文檔可能包含第三方產(chǎn)品信息,該信息僅供參考。阿里云對第三方產(chǎn)品的性能、可靠性以及操作可能帶來的潛在影響,不做任何暗示或其他形式的承諾。
mod_expires模塊設(shè)置
Apache可以通過配置文件的mod_expires模塊控制HTTP協(xié)議的Expires和Cache-Control頭部信息。mod_expires模塊的主要作用是自動生成頁面頭部信息中的Expires
標(biāo)簽和Cache-Control
標(biāo)簽,從而降低客戶端的訪問頻率和次數(shù),達(dá)到減少不必要流量和增加訪問速度的目的。
介紹說明
mod_expires是Apache眾多模塊中配置比較簡單的模塊,一共有以下三條指令。
ExpiresActive指令:打開或關(guān)閉產(chǎn)生Expires和Cache-Control標(biāo)簽的功能。
ExpiresByType指令:指定MIME類型文檔的過期時間,例如text/html文檔。
ExpiresDefault指令:所有文檔的默認(rèn)過期時間。
過期時間的寫法如下。
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只對靜態(tài)文件起作用,腳本生成的動態(tài)頁面不起作用。
配置步驟
啟用mod_expires模塊。在Apache配置文件(通常是
httpd.conf
或.htaccess
)中,添加以下指令以啟用mod_expires功能:ExpiresActive On
設(shè)置默認(rèn)過期時間。使用
ExpiresDefault
指令為所有文檔設(shè)置一個默認(rèn)的過期時間。例如,設(shè)置6個月后過期:ExpiresDefault "access plus 6 months"
按MIME類型設(shè)置過期時間。對于特定類型的資源,可以使用
ExpiresByType
指令分別設(shè)置不同的緩存時間。例如:ExpiresByType image/* "access plus 10 years" ExpiresByType text/* "access plus 10 years" ExpiresByType application/* "access plus 30 minutes"
禁用特定類型資源的緩存。若要禁止緩存特定類型資源,如將圖片設(shè)置為不緩存,可將max-age設(shè)為0秒:
ExpiresByType image/* A0
使用mod_headers模塊設(shè)置Cache-Control頭部。mod_headers模塊允許你自定義HTTP頭部信息,包括Cache-Control。例如,你可以設(shè)置讓瀏覽器始終驗(yàn)證緩存內(nèi)容:
Header set Cache-Control "no-cache, must-revalidate"
請確保在修改配置文件后重啟Apache服務(wù)以使更改生效。以上步驟是基于Apache服務(wù)器通過mod_expires和mod_headers模塊來設(shè)置緩存策略的基本方法。
mod_headers模塊設(shè)置
mod_headers模塊配置示例如下所示,詳細(xì)介紹請參考Apache官方網(wǎng)站。
# 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服務(wù)使更改生效。使用也以下命令重啟Apache服務(wù):
# 重新加載Apache配置(推薦)
sudo systemctl reload apache2
# 或者重啟Apache服務(wù)
sudo systemctl restart apache2
或者對于不使用systemctl
的系統(tǒng):
# 重新加載Apache配置(推薦)
sudo service apache2 reload
# 或者重啟Apache服務(wù)
sudo service apache2 restart