Drupal 7サイトを最適化しようとしています。Expires
ヘッダーが6時間に設定されていることに気付きましたが、.htaccess
ファイルによると、 2週間後、mod_expires
モジュールが有効になっていないことがわかりました。2つの質問があります。
mod_expires
を有効にせずにExpires
ヘッダーを設定する方法はありますか?編集:別の奇妙なことは、一部のcssファイルではヘッダーがまったく存在しないことです。
これに関連する場合、私の/admin/config/development/performance
の設定も次のようになります。
Cache pages for anonymous users: checked Cache blocks: checked Minimum cache lifetime: none Expiration of cached pages: 1 day
advaggreadme にあるルールに基づいて、この質問について私が思いついた定型Apacheルールをいくつか示します。反転したファイルの一致はテストされていませんが、この投稿に基づいています: https://stackoverflow.com/questions/12926604/inverted-filesmatch ; core's。htaccess を見て、除外する必要があるものを取得しました
<FilesMatch "(?<!\.php)$">
# No mod_headers
<IfModule !mod_headers.c>
# No mod_expires
<IfModule !mod_expires.c>
# Use ETags.
FileETag MTime Size
</IfModule>
</IfModule>
# Use Expires Directive.
<IfModule mod_expires.c>
# Do not use ETags.
FileETag None
# Enable expirations.
ExpiresActive On
# Cache all files for 2 weeks after access (A).
ExpiresDefault A1209600
</IfModule>
<IfModule mod_headers.c>
# Do not use etags for cache validation.
Header unset ETag
<IfModule !mod_expires.c>
# Set a Cache-Control header to 2 weeks.
Header set Cache-Control "max-age=1209600, no-transform, public"
</IfModule>
<IfModule mod_expires.c>
Header append Cache-Control "no-transform, public"
</IfModule>
</IfModule>
</FilesMatch>
あなたの場合、あなたができる最善のことはETagsを使うことです。
注:たまたまCDNから静的ファイルアセットをすべて提供している場合は、CDNモジュールで far-future headers を有効にすることができます。この方法でこれを行うと、ほとんどすべての静的ファイルトラフィックがPHP(Originリクエストで)を介して)ルーティングされるため、CDNを使用していない場合、サイトのパフォーマンスに非常に悪影響を与える可能性があります。