キャッシュの意味
ユーザーが Nuggets などの Web サイトにアクセスすると、最初に Web サイトから写真とデータが読み込まれ、再度開かれないようにローカルにキャッシュされます。次にサーバーにアクセスしてデータを取得し、ユーザー エクスペリエンスを向上させ、最適化します。ウェブページを開く速度。
キャッシュ効果
- 帯域幅の消費を削減する
- サーバーリクエストを減らす
- ウェブサイトのパフォーマンスを向上させ、顧客エクスペリエンスを最適化します
キャッシュの場所
優先順位: Service Worker > メモリ キャッシュ > ディスク キャッシュ > プッシュ キャッシュ
一般に、図に示すように、コンソールのサイズからファイル キャッシュの場所がわかります。
サービスワーカー
オフライン キャッシュでは、ページは最初に読み込まれたときに 1 回だけキャッシュされます。登録時にのみキャッシュされ、https リクエストを使用する必要があります。これにはリクエストのインターセプトが含まれるため、ファイル転送のセキュリティを確保するために https を使用する必要があります。
メモリキャッシュ
メモリ キャッシュ。通常、スクリプト、画像、スタイルなど、ページでよく使用されるリソースが保存されます。読み込み速度はディスクより速いですがキャッシュ時間が短く、プロセスが終了するとキャッシュが無効になります
ディスクキャッシュ
ハードディスクキャッシュ、大容量、すべてを保存可能、広いカバレッジ、より多くのキャッシュリソース、ただし読み取り速度はメモリキャッシュより遅い
プリフェッチキャッシュ
フレームフェッチキャッシュ、リンク内でプリフェッチとしてマークされたリソース。ブラウザがアイドル状態でリロードされていることを示します。
プッシュキャッシュ
プッシュ キャッシュは http/2 の知識です。上記 3 つのキャッシュのいずれもヒットしなかった場合、ここにキャッシュされます。通常、セッション (セッション) に保存され、制限時間は非常に短いです。セッションが閉じられると、キャッシュは無効になります。
CPU、ハードディスク、メモリ
多くの人と同じように、私もハードディスクとメモリの概念を混同する傾向があり、メモリとハードディスクは同じ概念であると常に考えていますが、実際はそうではありません。
CPU、ハードディスク、メモリはすべてコンピュータの重要なコンポーネントです
- cpu: プロセッサとも呼ばれる中央処理装置。さまざまなコンポーネントの機能を調整し、キャッシュします。
- ハードディスク: ディスク、ファイルやアプリケーション ソフトウェアを保存する役割。コンピュータの電源がオフになってもデータが失われることはありません。
- メモリ:ハードディスクなどのハードウェア上のデータとCPUとの間のデータ交換処理を担当します。小型、高速、電気で貯蔵、電気なしで空にできるのが特徴です。つまり、コンピュータの電源がオンになると、データが内部メモリに保存され、コンピュータの電源がオフになると、すべてのデータが自動的に消去されます。
Webキャッシュの種類
浏览器缓存
、cdn缓存
、数据库缓存
、代理服务器缓存
- CDN キャッシュ: Web リクエストを送信するとき、CDN はリクエストされたコンテンツの最短パスを計算します。リクエストを高速化するために、リクエストは通常 https://unpkg.com/vue@3などの CDN に入れられます。/dist/vue.global.js
- データベース キャッシュ: データ テーブル内のデータが大きすぎる場合、フロントエンド リクエストはそのデータをローカル メモリにキャッシュし、次回バックエンド データは最初にキャッシュからクエリされます。キャッシュがない場合は、 、リクエストはバックエンドに送信されます
- プロキシ サーバーのキャッシュ: ブラウザのキャッシュと似ていますが、プロキシ サーバーは幅広いクライアントに対応するため、何度も呼び出されるファイルはキャッシュされ、ページの応答を高速化し、帯域幅リクエストを削減します。
- ブラウザ キャッシュ: http リクエストを行うと、Web ページの前後方向などの http データがキャッシュされ、ユーザーが以前にアクセスしたデータが保存されます。
強力なキャッシュ
一定期間、サーバーにリクエストを送信せずにキャッシュから直接データを読み取ると、ステータス コードは次のようになります。200
判断基準:ブラウザはリクエストを送信する際、まずorフィールドのresponse header
有無を判断し、存在する場合は、expires(http1.0)
pragma
cache-control
强缓存
ネゴシエーションキャッシュ
强缓存
有効期限が切れた後协商缓存
(キャッシュ時間がcache-control
、max-age
または を超えた場合no-cache
)
- ネゴシエーション キャッシュが有効になります: ステータス コード
304
- ネゴシエーション キャッシュの無効化: ステータス コード
200
以下の2つの方法で実現します
最終更新日
再度リクエストする場合、最終変更時刻は(前回サーバーから返された last-modifiedrequest header
)を引き継ぎ、サーバーはそれを と比較し、同じである場合は304を返し、そうでない場合は200を返します。新しいリソースファイルif-last-modified
if-last-modified
last-modified
欠点:
- 情報が変更されていない場合でも、サーバーは変更して最終更新日を返すため、リソースが無駄になります。
- last-modifiedは秒単位で測定されます。変更が 1 秒未満の場合、サーバーはそれを認識せず、304 を返します。
eタグ
一意の識別子。サーバーは毎回 1 つを返しetag
、リソース ファイルが変更されると新しい識別子が生成されますetag
。再度リクエストする場合、(前のリクエストで返された etag ) をrequest header
保持し、2 つを比較し、一致している場合は 304 を返し、一致していない場合は 200 と新しいリソース ファイルを返します。if-none-match
2つの違い
- last-modified は効率が高く、ファイルの内容に応じて etag のハッシュ生成を計算する必要がある
- etagの方が正確です
- etag の方が優先度が高い
実際の利用シーン
- css、js、画像など、Webページ内の基本的に変更されていないデータはキャッシュされます。
- HTML構造はキャッシュされません
- Web ページのビジネス データはキャッシュされません