web-dev-qa-db-ja.com

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

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

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

これが何を意味するのかと思っていました。それはあなたが知っている静的なコンテンツが変化しないことを意味しますか、それともあなたが定期的に変化することを知っているコンテンツはそれらを持たないことを意味しますか、それはあなたがそれらを使用すべきではないことを意味しますか一般的に特別な必要がない限り。

後者の場合、いつ使用するのが適切ですか?助けてくれてありがとう。

9

ETagは、キャッシュ検証を決定するための「最終変更時刻」の代替手段です(ただし、組み合わせて使用​​できます)。

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

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

一般的に、私は「webpagetest.orgを実行している」AOLの「1つのサイズにすべて適合」というアドバイスに同意します。2番目の違いがあった場合、HTTPヘッダーに暗号文字列(ETagは通常、 Last-Modified-Timeが検出できる)は、手元のジョブに対して行います。

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

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

8
Metalshark

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

「Yahooは世界で最も忙しいWebサイトの1つです。その問題はおそらくnotあなたの問題です。」

負荷分散されたネットワーク全体で何百万もの一意を毎日処理していない場合、提供される提案がnotである可能性が高いサイトを最適化する際の選択肢。

7
danlefree