全部產品
Search
文件中心

:設定Apache緩衝策略

更新時間:Jun 30, 2024

本文主要介紹如何通過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隻對靜態檔案起作用,指令碼產生的動態網頁面不起作用。

配置步驟

  1. 啟用mod_expires模組。在Apache設定檔(通常是httpd.conf.htaccess)中,添加以下指令以啟用mod_expires功能:

    ExpiresActive On
  2. 設定預設到期時間。使用ExpiresDefault指令為所有文檔設定一個預設的到期時間。例如,設定6個月後到期:

    ExpiresDefault "access plus 6 months"
  3. 按MIME類型設定到期時間。對於特定類型的資源,可以使用ExpiresByType指令分別設定不同的緩衝時間。例如:

    ExpiresByType image/* "access plus 10 years"
    ExpiresByType text/* "access plus 10 years"
    ExpiresByType application/* "access plus 30 minutes"
  4. 禁用特定類型資源的緩衝。若要禁止緩衝特定類型資源,如將圖片設定為不緩衝,可將max-age設為0秒:

    ExpiresByType image/* A0
  5. 使用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