著者のMark Nottinghamは、HTTPプロトコルとWebキャッシングの分野で認められた専門家です。 彼はIETF HTTPbisワーキンググループの議長です。 彼はHTTP / 1.1の編集に参加しました。 6:キャッシング。 現在、HTTP / 2.0の開発に関与しています。
このテキストは、 Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported Licenseの下でライセンスされています。
翻訳者から:タイプミスと不正確さについては、PMでお知らせください。 ありがとう
Webキャッシュは、1つまたは複数のWebサーバーとクライアント、または複数のクライアントの間に配置され、応答のコピー(HTMLページ、画像、およびファイル(総称して表現)と呼ばれる)を維持しながら、着信要求を監視します。 -「コンテンツ」という言葉を使用させてください-私の意見では、それは耳を傷つけません)、私自身のニーズのために。 次に、同じURLで別の要求が到着した場合、キャッシュはサーバーに再要求する代わりに、以前に保存された応答を使用できます。
Webキャッシュが使用される主な理由は2つあります。
1. 待機時間の短縮 -要求時のデータはキャッシュ(クライアントに「近い」位置にある)から取得されるため、クライアント側でコンテンツを受信して表示する時間が短縮されます。 これにより、Webの応答性が向上します(翻訳者のメモ-感情的にではなく、リクエストへの迅速な応答のコンテキストでの「応答性」)。
2. ネットワークトラフィックの削減 -コンテンツの再利用により、クライアントに送信されるデータ量が削減されます。 これにより、顧客がトラフィックの代金を払えばお金を節約でき、帯域幅の要件を低く柔軟に保つことができます。
Webキャッシュの種類
ブラウザキャッシュ
最新のWebブラウザー(Internet Explorer、Safari、Mozillaなど)の設定ウィンドウを調べると、おそらく「キャッシュ」設定に気付くでしょう。 このオプションを使用すると、コンピューターのハードドライブの領域を選択して、以前に表示したコンテンツを保存できます。 ブラウザのキャッシュは、かなり単純なルールに従って機能します。 通常、セッションごとに1回(つまり、現在のブラウザーセッションに1回)データが「新鮮」かどうかを確認します。
このキャッシュは、ユーザーが[戻る]ボタンをクリックするか、リンクをクリックして、表示したばかりのページを表示する場合に特に便利です。 また、サイトで同じナビゲーション画像を使用する場合、それらはほぼ瞬時にブラウザのキャッシュから選択されます。
プロキシキャッシュ
プロキシキャッシュも同様に機能しますが、はるかに大規模です。 プロキシは数百または数千のユーザーによって提供されます。 大企業やインターネットサービスプロバイダーは、多くの場合、ファイアウォールでそれらを構成するか、個別のデバイス(仲介者)として使用します。
プロキシはクライアントやソースサーバーの一部ではなく、ネットワークに向けられているため、リクエストは何らかの方法でリダイレクトされる必要があります。 1つの方法は、ブラウザ設定を使用して、アクセスするプロキシを手動で指示することです。 別の方法は、代行受信プロキシを使用することです。 この場合、プロキシはネットワークによってリダイレクトされたWeb要求を処理するため、クライアントは要求を構成したり、その存在を知る必要さえありません。
プロキシキャッシュは、一種の共有キャッシュ(共有キャッシュ)です。1人のユーザーにサービスを提供する代わりに、多数のユーザーと連携するため、待ち時間とネットワークトラフィックの削減に非常に優れています。 主に人気のあるコンテンツが何度もリクエストされているためです。
ゲートウェイキャッシュ
「リバースプロキシキャッシュ」または「サロゲートキャッシュ」とも呼ばれるゲートウェイは、仲介者でもありますが、システム管理者が帯域幅を節約するために使用する代わりに、通常、ウェブマスターが使用します(ゲートウェイ)サイトを拡張性、信頼性、効率性を高めるために。
リクエストはさまざまな方法でゲートウェイにリダイレクトできますが、通常は何らかの形のロードバランサーが使用されます。
コンテンツ配信ネットワーク(CDN)は、インターネット(またはその一部)全体にゲートウェイを配布し、キャッシュされたコンテンツを関心のあるWebサイトに配信します。 SpeederaとAkamaiはCDNの例です。
このチュートリアルは、主にブラウザのキャッシュとプロキシに焦点を当てていますが、一部の情報はゲートウェイに興味がある人にも適しています。
なぜそれを使用する必要があります
キャッシュは、インターネット上で最も誤解されている技術の1つです。 特に、ウェブマスターはサイトの制御を失うことを恐れています。なぜならプロキシはユーザーを「隠す」ことができ、トラフィックの監視を困難にするからです。
残念なことに、彼ら(ウェブマスター)にとっては、ウェブキャッシュが存在しなくても、サイトの所有者がユーザーがどのようにサイトを使用しているかを正確に把握できるようにするには、インターネット上の変数が多すぎます。 これがあなたにとって大きな問題であるなら、このガイドはあなたのサイトを「キャッシュ嫌い」にせずに必要な統計を得る方法を教えます。
もう1つの問題は、キャッシュが期限切れまたは期限切れのコンテンツを保存できることです。
一方、Webサイトの設計を担当している場合、キャッシュは読み込みを高速化し、サーバーとインターネット接続の負荷を許容範囲内に保つのに役立ちます。 違いは印象的です。キャッシュで動作しないサイトの読み込みには数秒かかる場合があります。 キャッシングを使用する利点により、一瞬で見えるようになります。 ユーザーはサイトの読み込み時間が短いことに感謝し、おそらくもっと頻繁にアクセスするでしょう。
このように考えてみてください。多くの大規模なインターネット企業は、世界中のサーバーファームのセットアップに数百万ドルを費やしてコンテンツを複製し、ユーザーのデータへのアクセスをできるだけ早くします。 キャッシュは同じことを行い、エンドユーザーにより近いものになります。
この観点から、CDNは興味深い開発です。なぜなら、多くのプロキシキャッシュとは異なり、それらのゲートウェイはキャッシュされたWebサイトの関心に合わせられているからです。 ただし、CDNを使用している場合でも、ブラウザにプロキシとそれに続くキャッシュがあることを考慮する必要があります。
要約すると、プロキシとブラウザのキャッシュは、好きかどうかに関係なく使用されます。 正しいキャッシュ用にサイトを構成しない場合、デフォルトのキャッシュ設定が使用されることに注意してください。
Webキャッシュの仕組み
すべてのタイプのキャッシュには、キャッシュからコンテンツを取得するタイミング(使用可能な場合)を決定するために使用する特定のルールセットがあります。 これらのルールの一部はプロトコル(HTTP 1.0 / HTTP 1.1)によって設定され、一部はキャッシュ管理者(ブラウザユーザーまたはプロキシ管理者)によって設定されます。
一般的に、これらは最も一般的なルールです(詳細がわからなくても心配しないでください。以下で説明します)。
- 応答ヘッダーがキャッシュに保存しないように指示した場合、保存しません。
- 要求が許可されているか、セキュリティで保護されている(つまりHTTPS)場合、キャッシュされません。
- 次の場合、キャッシュされたコンテンツは「新鮮」と見なされます(つまり、ソースサーバーからの確認なしでクライアントに送信できます)。
- ライフタイムを制御する有効期限またはその他の見出しがあり、まだ有効期限が切れていません。
- キャッシュが最近コンテンツをチェックし、かなり前に変更された場合。
新しいコンテンツは、サーバーからチェックせずに、キャッシュから直接取得されます。 - コンテンツが古い場合、ソースサーバーはそれを検証するか、既存のコピーがまだ最新かどうかをキャッシュに伝えるように求められます。
- 特定の状況-たとえば、ネットワークから切断された場合-は、ソースサーバーからチェックせずに、古い応答を保存できます。
応答にバリデーター(
ETag
または
Last-Modified
ヘッダー)が含まれておらず、鮮度に関する明示的な情報が含まれていない場合、コンテンツは通常(常にではないが)キャッシュされていないと見なされます。
鮮度と検証は、キャッシュがコンテンツで機能する最も重要な方法です。 新鮮なコンテンツはキャッシュから即座に利用可能になります。 有効なコンテンツは、変更されていない場合、すべてのパッケージの再送信を回避します。