web-dev-qa-db-ja.com

7「Expires」ヘッダーを増やす

Drupal 7サイトを最適化しようとしています。Expiresヘッダーが6時間に設定されていることに気付きましたが、.htaccessファイルによると、 2週間後、mod_expiresモジュールが有効になっていないことがわかりました。2つの質問があります。

  1. 必要な権限がないので、mod_expiresを有効にせずにExpiresヘッダーを設定する方法はありますか?
  2. ヘッダーを6時間に設定することは何ですか?

編集:別の奇妙なことは、一部のcssファイルではヘッダーがまったく存在しないことです。

これに関連する場合、私の/admin/config/development/performanceの設定も次のようになります。

Cache pages for anonymous users: checked Cache blocks: checked Minimum cache lifetime: none Expiration of cached pages: 1 day

2
lunr

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を使用していない場合、サイトのパフォーマンスに非常に悪影響を与える可能性があります。

1
mikeytown2