ETagを使用する場合と使用しない場合


9

私はWebPageTest.orgで私たちのサイトを見ていましたが、ウェブサイトを高速化するための推奨事項の1つは次のとおりです。

ETagヘッダーは、それを必要とする明確な理由がない限り、通常は使用しないでください。

これはどういう意味かと思っていました。それはあなたが知っている静的なコンテンツがそれらを持っているべきではありません変更されることはありませんか、それはあなたが知っている平均コンテンツはそれらを持っているべきではありません定期的に変更されない、またはそれはあなたがそれらを使用してはならないことを意味しない意味しています一般的にあなたがAを持っていない限り、特定のニーズ。

後者の場合、それらを使用する適切なタイミングはいつですか?助けてくれてありがとう。

回答:


8

ETagは、キャッシュの検証を決定するために、「Last-Modified-Time」の代わりに使用できます(組み合わせて使用​​できます)。

クライアントは、ETagに基づいてif-matchesまたはif-none-matchesなどの事前条件を送信できます。これはGETリクエストだけではありません(webpagetest.orgが行うことです)。「日和見更新」を使用して、PUTリクエストに事前条件があり、ETagが実行されてからリソースが更新された場合に更新操作を実行しないようにすることができます。最後に獲得した。

簡単に言うと、CMSのページで編集をヒットし、友達がCMSのページで編集をヒットし、友達が編集を実行して保存をヒットし、最後に保存をヒットします-ETagまたはContent-MD5 HTTPヘッダーなしで必要になります問題の発生(友達の変更を消去するなど)を防止するためにホイールを再発明するために、ソリューションはすでにHTTPプロトコルの一部であるため、それを使用するだけでも理にかなっています。

一般的に、私はAOL(webpagetest.orgを実行する)の「1つのサイズですべてに対応する」というアドバイスに同意します。1秒の違い( Last-Modified-Timeが検出できる)は、手元のジョブに対して実行されます。

ページが1秒間に数回更新されており、表示する最新の最も正確なバージョンが絶対に必要な場合は、HTTP GET以外のソリューションを試すか、ETagを使用することをお勧めします。

ETagにファイルシステムごと、サーバー構成の変更ごとなどの情報(Apacheのデフォルトのiノードなど)が含まれていないことに注意してください。そうしないと、2つのサーバーがある場合に問題が発生します(各サーバーのETagは一致しません)。


それで大丈夫です。確信が持てない例が1つあります。1つのURIに複数のバージョンのコンテンツ(モバイルバージョンやInternet Explorerバージョンなど)がある場合、ETagを使用してすべてのバージョンを検索し、一致を見つけることができます(そのため、if- none-matches not if-not-match)-誰に尋ねるかに応じて、さまざまな回答があります(複数の表現に対して1つの永続的なURIがないなど)。
Metalshark

7

YSlow FirebugプラグインのCoding Horrorによる優れた評価を言い換えると(WebPageTest.orgが評価の基準として使用しているようです):

「Yahooは世界で最も忙しいウェブサイトの1つです-その問題はおそらくあなたの問題ではありませ。」

負荷分散されたネットワーク全体で何百万もの一意を扱っていない場合は、サイトを最適化するときに、提示された提案がすべて正しい選択ではない可能性が十分にあります。


コメントに感謝しますが、あなたは間違っています。スティーブ・サウンダーズは、ここで説明していますstevesouders.com/blog/2010/09/07/webpagetest-org-and-page-speed(彼はの大きな支持者だ有益な改善- Googleのために動作しますつまりだけではない改善。)私たちのサイトにはあります間違いなく、そのような改善による速度の増加を感じるのに十分な大きさです(そしてすでに持っています)。
Django Reinhardt、

2
yslow firebug拡張には、ほとんどのサイトでより現実的な小規模サイトのテストが含まれるようになりました。
ジョンコンデ

1
@Django Reinhardt-私は返信を書き直しました。提案の多くはどのサイトにも有効ですが、Y!の場合、機能がロードバランシングと競合するため、特にETagには問題があります
danlefree

あなたが提供したリンクには、YahooのETagsの説明(developer.yahoo.com/performance/rules.html#etags)へのリンクがあり、私の質問に適切に答えています。(はい、おそらくETagを提供しない方が良いでしょう。)ありがとうございます。
Django Reinhardt、

1
@Django:複数のサーバーがある場合、ETagが問題になる可能性があります。ただし、同じファイルが常に同じETagを返す限り、問題はありません。参照:webmasters.stackexchange.com/questions/1459/...
DisgruntledGoat
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.