このトピックでは、Apacheのmod_expiresおよびmod_headersモジュールを使用してApacheキャッシュポリシーを設定する方法について説明します。
免責事項: このトピックには、サードパーティ製品に関する情報が含まれる場合があります。 情報は参照のためだけです。 Alibaba Cloudは、サードパーティツールのパフォーマンスと信頼性、またはこれらのツールを使用して実行される操作の潜在的な影響について、保証またはその他の形態のコミットメントを行いません。
mod_expires
Apacheでは、構成ファイルのmod_expiresモジュールを使用して、HTTPリクエストのExpiresヘッダーとCache-Controlヘッダーを指定できます。 mod_expiresモジュールは、Expires
およびCache-Control
ヘッダーの値を自動的に生成して、クライアントからの訪問頻度と訪問数を減らします。 これにより、データ転送が削減され、コンテンツ配信が高速化されます。
説明
Apacheのさまざまなモジュールの中で、mod_expiresモジュールは簡単に設定できます。 mod_expiresモジュールは、次のディレクティブをサポートします。
ExpiresActive: ExpiresおよびCache-Controlヘッダーの生成を有効または無効にします。
ExpiresByType: テキストやHTMLドキュメントなどのMIMEドキュメントのTTL値を指定します。
ExpiresDefault: すべてのドキュメントのデフォルトTTL値を指定します。
TTL値の式:
アクセスプラス1ヶ月
アクセスプラス4週間
今プラス30日
修正プラス5時間3分
A2592000
M604800
アクセスプラス1か月、アクセスプラス4週間、現在プラス30日、およびA2592000は同じ方法でTTL値を定義します。 TTL値は、リクエストが受信された時点で開始されます。
修正プラス5時間3分とM604800は同じ方法でTTL値を定義します。 TTL値は、要求されたファイルが最後に変更された時点で開始されます。
M604800は、スクリプトを使用して作成された動的ページではなく、静的ファイルにのみ適用されます。
手順
mod_expiresモジュールを有効にします。 Apache設定ファイルには、
httpd.conf
またはがあります。ほとんどの場合、htaccess
に次のディレクティブを追加してmod_expiresモジュールを有効にします。ExpiresActiveオン
デフォルトのTTL値を指定します。 すべてのドキュメントのデフォルトTTL値を指定するには、
ExpiresDefault
ディレクティブを使用します。 たとえば、次のディレクティブを使用して、TTL値を6か月に設定します。ExpiresDefault「アクセスプラス6ヶ月」
MIMEタイプに基づいてTTL値を指定します。
ExpiresByType
ディレクティブを使用して、特定の種類のリソースに異なるTTL値を指定できます。 例:ExpiresByType image/* "access plus 10 years" ExpiresByType text/* "access plus 10 years" ExpiresByTypeアプリケーション /* "access plus 30 minutes"
特定の種類のリソースのキャッシュを無効にします。 画像などの特定の種類のリソースのキャッシュを無効にする場合は、max-ageパラメーターを0秒に設定します。
ExpiresByTypeイメージ /* A0
mod_headersモジュールを使用して、Cache-Controlヘッダーを設定します。 mod_headersモジュールでは、Cache-Controlを含むカスタムHTTPヘッダーを設定できます。 たとえば、ブラウザでキャッシュされたコンテンツを常に検証できるようにすることができます。
ヘッダーセットキャッシュ-コントロール "no-Cache, must-revalidate"
変更が有効になるように設定ファイルを変更した後、必ずApacheを再起動してください。 上記の手順では、mod_expiresモジュールとmod_headersモジュールを使用してキャッシュポリシーを設定する方法について説明します。
mod_headers
次の例は、mod_headersモジュールを設定する方法を示しています。 詳細については、Apache公式Webサイトをご覧ください。
# 年
ヘッダーセットキャッシュ-コントロール "max-age=2592000"
# 週
ヘッダーセットキャッシュ-コントロール "max-age=604800"
# 決してキャッシュ
ヘッダーセットの期限切れ「木曜日、2003年12月1日16:00:00 GMT」
Header set Cache-コントロール "no-store, no-cache, must-revalidate"
ヘッダーセットPragma "no-cache"
変更を有効にするためにサービスを再起動します
設定を変更したら、Apacheサービスを再起動して変更を有効にします。 次のコマンドを実行して、Apacheサービスを再起動します。
# (推奨) Apache設定をリロードします。
sudo systemctlリロードapache2
# またはApacheサービスを再起動します。
sudo systemctl再起動apache2
systemctl
を使用しないOSの場合:
# (推奨) Apache設定をリロードします。
sudoサービスapache2リロード
# またはApacheサービスを再起動します。
sudoサービスapache2再起動