web-dev-qa-db-ja.com

Apache Etags、助けが必要ですか?

現在、Expireヘッダーを使用していません。これをお勧めしますが、大規模な開発チーム/ビジネスに慣行を変更させ、新しいリリースごとに静的ファイルの名前を変更させることは、更新されたファイルを取得するのが簡単ではありません。

YSlowを実行すると、EtagsのFが表示されます。「ETagが正しく構成されていないコンポーネントが24個あります」。 Apache httpd.confにはEtagsが手動で構成されていないため、デフォルト設定を使用しているようです。 (FileETag INode MTimeサイズ)。私たちのサイトにアクセスしてから更新を押すと、Etagsがかなりうまく機能しているように見えます。

1つの画像の例:If-Modified-Since:Sat、23 Jul 2011 02:05:28 GMT If-None-Match: "21246-eb05-4a8b30415ea00" Cache-Control:max-age = 0

HTTP/1.1 304未変更日付:2011年9月6日火曜日20:59:29 GMTサーバー:IBM_HTTP_Server接続:キープアライブキープアライブ:timeout = 6 Etag: "21246-eb05-4a8b30415ea00"

1)ランディングページに画像ファイル、js、htmlなどの「304NotModified」が表示されます。 Yslowが、すべて同じデフォルトのApache構成で構成されているのに、誤って構成されたEtagがあると言うのはなぜですか? YSlowレポートには、これらの同じファイルタイプが記載されています。

2)複数のApache Webサーバー間にF5ロードバランサーがあり、スティッキービットを使用しているため、Apache iノードEtagはあまり気にしないと思います。しかし、ユーザーが明日戻ってきて別のWebサーバーにアクセスすると、キャッシュオプションが失われます。 httpd.confを変更し、すべてのWebサーバーからEtag iノード変数を削除する必要がありますか?

長さでごめんなさい!ありがとう

1
roacha

1)メッセージは静的ファイルではなく、ETagを持たない他の配信コンテンツ(例:PHPページ、CGI出力など))に関するものでしょうか?

2)はい、タグからiノードを削除し、ファイルのタイムスタンプがすべてのバックエンドで同じであることを確認する必要があります。

1
C. Ramseyer

C.ラムゼイヤーは正しい。 YSlowをかなり満足させるために使用する構成は次のとおりです。

<Directory /path/to/files>
  FileETag MTime Size
  ExpiresActive On
  ExpiresDefault "access plus 1 week"
  ExpiresByType text/html "access plus 1 week"
  ExpiresByType text/css "access plus 1 week"
  ExpiresByType text/javascript "access plus 1 week"
  ExpiresByType image/gif "access plus 1 month"
  ExpiresByType image/jpg "access plus 1 month"
  ExpiresByType image/png "access plus 1 month"
</Directory>

ただし、1週間ページをキャッシュしても問題ありませんであることを確認してください。たとえば、毎日更新されるブログがある場合、上記の設定により、投稿のリストが1週間キャッシュされます。この場合、ExpiresDefualt "access"を使用することをお勧めします

0
xofer