ホームページ ウェブフロントエンド htmlチュートリアル フロントエンドブラウザキャッシュの使用方法

フロントエンドブラウザキャッシュの使用方法

Nov 27, 2017 am 10:05 AM
firefox webkit ブラウザ

以前にブラウザのキャッシュについて紹介しましたが、HTML のオフライン キャッシュについても紹介しましたが、あまり話しすぎると混乱しやすいので、今日はこれらのキャッシュの違いとキャッシュの使用方法について説明します。

200 メモリキャッシュからはサーバーにアクセスせず、直接キャッシュを読み取り、メモリからキャッシュを読み取ります。このときのデータはメモリ上にキャッシュされ、プロセスが終了すると、つまりブラウザを閉じるとデータは存在しなくなります。ただし、この方法では、サーバーにアクセスせずに、ディスク キャッシュから派生リソース

200 をキャッシュすることしかできません。また、プロセスが強制終了された場合でも、データはまだ存在します。このメソッドは派生リソースのみをキャッシュできます。

304 Not Modified はサーバーにアクセスし、サーバーがこの ステータス コード を返します。次に、キャッシュからデータを読み取ります。

第 3 レベルのキャッシュの原理

まずメモリを確認し、メモリがある場合は直接ロードします

メモリがない場合は、ハード ディスクを選択して取得します。ハードディスクがない場合は、ネットワーク リクエストを実行します

ロードします。次のように、リソースがハードディスクとメモリにキャッシュされます

写真

にアクセスします。

ブラウザを終了します。 -> 200 (ディスク キャッシュから) -> 200 (メモリ キャッシュから)

アプリケーション キャッシュは、上記のキャッシュとは少し異なります。インターネットに接続していなくても、ハードディスクから読み込むことができます。インターネットに接続していなくても閲覧できます。

ブラウザのキャッシュを設定します

304 キャッシュをネゴシエートするか、一度サーバーと通信する必要がありますか? サーバー通信を遮断したい場合は、ブラウザにローカル キャッシュの使用を強制する必要があります (キャッシュ制御/期限切れ)。

一般に、それを設定するにはいくつかの方法があります: ブラウザキャッシュ。

1. HTTP METAによる有効期限とキャッシュ制御の設定

<meta http-equiv="Cache-Control" content="max-age=7200" />
 <meta http-equiv="Expires" content="Sun Oct 15 2017 20:39:53 GMT+0800 (CST)" />
ログイン後にコピー

このように書くと、Webページに対してのみ有効で、Webページ内の画像やその他のリクエストには無効です。

2. Apache サーバー構成の画像、CSS、JS、フラッシュ キャッシュ

このテクノロジーは主にサーバー構成を通じて実装されます。Apache サーバーを使用する場合は、mod_expires モジュールを使用して実装できます。

mod_expires モジュールをコンパイルします。

Cd  /root/httpd-2.2.3/modules/metadata/usr/local/apache/bin/apxs -i -a -c mod_expires.c //编译
ログイン後にコピー

まず httpd.conf ファイルを開き、expires モジュールを検索して、このモジュールが有効であることを示す左側の # 記号を削除し、Apache サーバーを再起動します

httpd.conf 設定を編集します。 : 次のコンテンツ

<IfModule mod_expires.c>ExpiresActive on
ExpiresDefault "access plus 1 month"
ExpiresByType text/html "access plus 1 months"
ExpiresByType text/css "access plus 1 months"
ExpiresByType image/gif "access plus 1 months"
ExpiresByType image/jpeg "access plus 1 months"
ExpiresByType image/jpg "access plus 1 months"
ExpiresByType image/png "access plus 1 months"
EXpiresByType application/x-shockwave-flash "access plus 1 months"
EXpiresByType application/x-javascript      "access plus 1 months"
#ExpiresByType video/x-flv "access plus 1 months"</IfModule>
ログイン後にコピー

3、php などを追加します。

<?php
  header("Cache-Control: public");
  header("Pragma: cache");
  $offset = 30*60*60*24; // cache 1 month
  $ExpStr = "Expires: ".gmdate("D, d M Y H:i:s", time() + $offset)." GMT";
  header($ExpStr);?>
ログイン後にコピー

または

$seconds_to_cache = 3600;$ts = gmdate("D, d M Y H:i:s", time() + $seconds_to_cache) . " GMT";header("Expires: $ts"); header("Pragma: cache");header("Cache-Control: max-age=$seconds_to_cache");
ログイン後にコピー
キャッシュされたフロントエンド コードのデプロイメント

質問 1: キャッシュを使用して、フロントエンド コードを更新するにはどうすればよいですか?

以下に示すように、リソース ファイルまたは画像の後にバージョン番号を追加できます。

質問 2: しかし、すべてのファイルにバージョン番号を追加した後、変更したのは 1 つのファイルだけで、他のファイルのキャッシュは無駄ではありませんか?

この問題を解決するには、データ

summary

アルゴリズムを使用してファイルの概要情報を見つけることができます。この概要情報はファイルの内容と 1 対 1 に対応しています。以下に示すように:

これで問題は解決します。

質問 3: また新たな問題が発生しました。ファイルを公開するときはどうすればよいですか?

1. 最初にページをデプロイし、次にリソースをデプロイします。2 つのデプロイメントの間の時間間隔中に、ユーザーがページにアクセスすると、古いリソースが新しいページ構造にロードされ、古いバージョンのリソースがロードされます。キャッシュ後の結果は、ユーザーが不規則なスタイルでページにアクセスし、手動で更新しない限り、ページはリソース キャッシュが期限切れになるまでエラーを実行し続けます。

2. 最初にリソースをデプロイし、次にページをデプロイします。デプロイ時間間隔内で、古いバージョンのリソースのローカル キャッシュを持つユーザーが Web サイトにアクセスします。要求されたページは古いバージョンであるため、リソース

reference

は変更されていません。ブラウザはローカル キャッシュを直接使用します。この場合、ページは正常に表示されますが、ローカル キャッシュを持たないユーザーまたはキャッシュの有効期限が切れたユーザーが Web サイトにアクセスすると、古いバージョンのページが新しいバージョンのリソースをロードし、ページ実行エラーが発生します。 , ページがデプロイされると、この部分が表示されます。ユーザーが再度ページにアクセスすると、通常の状態に戻ります。

さて、上記の分析から言いたいことは、誰も最初にデプロイすることはできないということです。これにより、展開プロセス中にページが混乱する可能性があります。したがって、トラフィックが少ないプロジェクトの場合、研究開発の学生は、夜中にこっそりオンラインにアクセスして、最初に

静的

リソースをロードしてからページをデプロイすることで、問題が少なくなるように見えます。

これらの問題を解決するにはどうすればよいですか?

この問題は、公開されたリソースをカバーするためにリリースされるリソースを使用することを伴う、リソースのオーバーレイ リリースに起因します。これを解決するのは簡単です。つまり、非カバレッジ パブリッシングを実装することです。

キャッシュに関しては非常に多くの側面があります。さらに興味深い情報については、PHP 中国語 Web サイトの他の関連記事に注目してください。

関連書籍:

HTML でデジタル フォーカス チャートのカルーセル コードを実装する方法


HTML のテキストの最後の行が不完全に表示される場合の対処方法

キャンバスを使用してパーティクルファウンテンアニメーション効果を作成する方法

以上がフロントエンドブラウザキャッシュの使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

カスタムスタイルのシートは、SafariのローカルWebページでバイドゥページでは効果を発揮できないのはなぜですか? カスタムスタイルのシートは、SafariのローカルWebページでバイドゥページでは効果を発揮できないのはなぜですか? Apr 05, 2025 pm 05:15 PM

Safariでカスタムスタイルシートを使用することについてのディスカッション今日は、Safariブラウザ向けのカスタムスタイルシートのアプリケーションに関する質問について説明します。フロントエンド初心者...

CSSを介してサイズ変更シンボルをカスタマイズし、背景色で均一にする方法は? CSSを介してサイズ変更シンボルをカスタマイズし、背景色で均一にする方法は? Apr 05, 2025 pm 02:30 PM

CSSでサイズ変更シンボルをカスタマイズする方法は、背景色で統一されています。毎日の開発では、調整など、ユーザーインターフェイスの詳細をカスタマイズする必要がある状況に遭遇することがよくあります...

Webページにローカルにインストールされている「Jingnan Mai Round Body」を正しく表示するにはどうすればよいですか? Webページにローカルにインストールされている「Jingnan Mai Round Body」を正しく表示するにはどうすればよいですか? Apr 05, 2025 pm 10:33 PM

最近、Webページにローカルにインストールされたフォントファイルを使用して、インターネットから無料のフォントをダウンロードし、システムに正常にインストールしました。今...

JavaScriptまたはCSSを介してブラウザ印刷設定でページの上部と終了を制御する方法は? JavaScriptまたはCSSを介してブラウザ印刷設定でページの上部と終了を制御する方法は? Apr 05, 2025 pm 10:39 PM

JavaScriptまたはCSSを使用して、ブラウザの印刷設定のページの上部と端を制御する方法。ブラウザの印刷設定には、ディスプレイが...

Webページにローカルにインストールされたフォントファイルを使用する方法は? Webページにローカルにインストールされたフォントファイルを使用する方法は? Apr 05, 2025 pm 10:57 PM

Webページにローカルにインストールされたフォントファイルを使用する方法Webページ開発でこの状況に遭遇しましたか:コンピューターにフォントをインストールしました...

ネガティブマージンが場合によっては効果がないのはなぜですか?この問題を解決する方法は? ネガティブマージンが場合によっては効果がないのはなぜですか?この問題を解決する方法は? Apr 05, 2025 pm 10:18 PM

なぜマイナスマージンが場合によっては有効にならないのですか?プログラミング中、CSSの負のマージン(負...

CSSとFlexBoxを使用して、さまざまな画面サイズで画像とテキストのレスポンシブレイアウトを実装する方法は? CSSとFlexBoxを使用して、さまざまな画面サイズで画像とテキストのレスポンシブレイアウトを実装する方法は? Apr 05, 2025 pm 06:06 PM

CSSを使用してレスポンシブレイアウトを実装して、Webデザインのさまざまな画面サイズの下でレイアウトの変更を実装する場合、CSS ...

フレックスレイアウトの下のテキストは省略されていますが、コンテナは開かれていますか?それを解決する方法は? フレックスレイアウトの下のテキストは省略されていますが、コンテナは開かれていますか?それを解決する方法は? Apr 05, 2025 pm 11:00 PM

フレックスレイアウトとソリューションの下でのテキストの過度の省略によるコンテナの開口部の問題が使用されます...

See all articles