ネットワークキャッシュ


キャッシュ


キャッシュは、コンピュータ科学においてデータまたは値を予めコピーする一時的な場所です.
キャッシュが元のデータにアクセスする時間がキャッシュのアクセス時間より長い場合、
時間を節約したい時に使います.

ヘッダーと条件要求の検証


キャッシュを再使用するには、検証ヘッダ、条件付きリクエストを使用します.

検証ヘッダー(Last Modified)と条件要求(If-Modified-Since)


Last Modified:データが最後に変更された時間をタイトルに含めます.
    Last-Modified: <day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT

If-MOdified-Since:キャッシュがタイムアウトしても、対応するヘッダを使用して条件付きリクエストを行うことができます.

=>変更がない場合は、応答結果を再利用するために、本体以外のHTTPヘッダのみを送信します.クライアントは、応答を受信するとキャッシュをリフレッシュし、一定期間有効にします.
整理する
  • キャッシュの有効時間を超えると、サーバ上のデータはリフレッシュされませんか?
  • 304 Not Modified+ヘッダメタデータのみ応答(本体X)
  • クライアントは、サーバから送信応答ヘッダ情報を用いてキャッシュメタデータ
  • をリフレッシュする.
  • クライアントキャッシュにおけるデータ回収
  • の結果、
  • がダウンロードされたが、ヘッダ情報のみがダウンロードされた.
  • 非常に実用的なソリューション
  • 短所
  • 1秒未満(0.x秒)キャッシュ
  • を調整できません.
  • 日付ベースの論理
  • を使用
  • データは、日付を変更するだけで他のデータとして認識されます.
  • サーバで個別のキャッシュロジックを管理するのは難しい.
  • 検証ヘッダー(ETag)&条件付きリクエスト


    ETag(Entity Tag)
  • キャッシュ・データには、任意の一意のバージョン名があります.
    -例:ETag:「v 1.1」、ETag:「61 dis 0 admczockzockzockao 1」
  • データが変更された場合は、名前を変更します(Hash再生)
    -例:ETag:「81401 ckcksaw->ETag:」95029 dkocoizuc
  • はETagのみを送信し、同じ場合は保持し、異なる場合は再取得する
  • If-None-Match
  • ETagの検証
  • 整理する
  • はETagのみを送信し、同じであれば保持し、異なる場合は
  • を再取得する.
    サーバからの完全管理
  • キャッシュ制御ロジック
  • クライアントは、サーバ上でのみこの値を提供する(クライアントはキャッシュメカニズムを知らない)
  • .
  • 例)
    1.betaがオープンしている間、サーバはファイルの変更から3日以内にETagを維持します.
    ETagは、
  • アプリケーション導入サイクルで
  • を更新します.

    キャッシュ関連タイトル


    Cache-Control: max-age
  • キャッシュ有効時間.秒
    Cache-Control: no-cache
  • データはキャッシュできますが、常に1台のサーバで検証および使用されます.
    **Cache-Control: no-store
  • のデータに敏感な情報は保存できません(メモリでのみ使用し、できるだけ早く削除してください)
    **Expires: Mon, 01 Jan 1990 00:00:00 GMT
  • キャッシュの有効期限を正しい日付として指定する
  • HTTP 1.0使用開始
  • より柔軟なキャッシュ制御を提供:最大年齢推奨
  • キャッシュ制御:最大年齢とともに使用する場合、Expires
  • は無視されます.

    プロキシキャッシュ


    プロキシサーバとは?クライアントが他のネットワークサービスに間接的に接続できるコンピュータシステムまたはアプリケーション.クライアントとサーバの間でプロキシ通信を実行することをプロキシサーバと呼び、リレー機能のサーバをプロキシサーバと呼ぶ.
    セキュリティ、キャッシュによるパフォーマンス、トラフィック分散などの利点があります.

    エージェントキャッシュが米国に1台のサーバがあると仮定すると、直接アクセスして資料を取得する場合、速度は必然的に遅くなります.しかし、韓国でエージェントキャッシュサーバーを通じてデータをキャッシュにアップロードすれば、同じ国内のクライアントがより速いスピードでデータを取得することができる.
    プロキシサーバに関するキャッシュ命令
    - Cache-Control: public
    -応答は共通キャッシュに格納できます
    - Cache-Control: private
    -応答はユーザー専用のプライベートキャッシュに保存する必要があります(デフォルト)
    - Cache-Control: s-maxage
    -プロキシキャッシュにのみ適用されるmax-age
    -age:60(HTTPヘッダ)
    -originサーバで応答した後、プロキシキャッシュに滞留する時間(秒)
    無効なキャッシュ命令
    - Cache-Control: no-cache
    -データはキャッシュできますが、常に1台のサーバを検証して使用します.
    - Cache-Control: no-store
    -データの機密性、保存不可
    - Cache-Control: must-revalidate
    -キャッシュが期限切れになった後に最初にクエリを行う場合は、元のサーバを検証する必要があります.
    -1台のサーバのアクセスに失敗した場合にエラーが発生する必要があります-504(ゲートウェイタイムアウト)
    -must-revalidateキャッシュを使用(キャッシュが有効な場合)
    - Pragma: no-cache
    -HTTP 1.0の子に適合
    無効な応答を実行するには、上記のキャッシュコマンドをすべて入れる必要があります.
  • Cache-Control: no-cache, no-store, must-revalidate
  • Pragma: no-cache
  • No-cache VS must-revalidate比較
    (no-chache)
    プロキシキャッシュサーバと元のサーバとのネットワーク接続が切断されてアクセスできない場合、応答「200 OK」の概念は「エラーではなく古いデータを表示する」です.

    (must-revalidate)
    サーバにアクセスできない場合、504ゲートウェイタイムアウトエラーが送信されます.*通帳残高などの重要な情報が元のサーバにアクセスできないため、以前のデータを送信すると大きな問題が発生する可能性があるため、「再検証」を使用する必要があります.

    Reference

  • コードstaitsネットワークカリキュラム
  • https://developer.mozilla.org/ko/docs/Web/HTTP/Caching
  • https://kamang-it.tistory.com/599
  • https://hahahoho5915.tistory.com/33?category=839992