ホームページ  >  記事  >  バックエンド開発  >  クライアント側キャッシュを使用して Web サイトを最適化する原理の分析 ページ 1/2_PHP チュートリアル

クライアント側キャッシュを使用して Web サイトを最適化する原理の分析 ページ 1/2_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:50:05864ブラウズ

多くの人は、まずサーバー キャッシュの観点からプログラムを最適化したいと考えます。さまざまなサーバー キャッシュ方法にはそれぞれ独自の特徴があります。たとえば、私が参加したいくつかのプロジェクトでは、キャッシュ ヒット率に応じて Com+/Enterprise Libiary Caching を使用しました。 Windows サービスや静的ファイルなどのサーバー側のキャッシュと HTTP 圧縮テクノロジですが、クライアント側のキャッシュは無視されることがよくあります。サーバーのキャッシュによってページへのアクセスが非常に高速になったとしても、ブラウザーのダウンロードに依存する必要があります。そして、クライアント側のキャッシュを追加すると、サイト内で最も頻繁にアクセスされるページをキャッシュできるため、Web サーバーのスループット (通常は 1 秒あたりのリクエストの観点から) が完全に向上します。データ コンピューティング) を使用して、アプリケーションのパフォーマンスとスケーラビリティを向上させます。
オンライン ショッピングに関する調査によると、ほとんどの人は店舗では行列に並ぶことに抵抗はありますが、オンライン ショッピングでは待ちたくないことがわかりました。調査会社 Websense は、インターネット ユーザーの 70% が 10 秒以上ページを読むことに抵抗があると主張しています。 70%以上の人が速度が遅すぎるため、現在の注文をキャンセルします。


基礎知識
1) 「Last-Modified」とは何ですか?

ブラウザが初めて URL をリクエストしたとき、サーバーから返されるステータスは 200 で、コンテンツはリクエストしたリソースです。 Last-Modified 属性は、このファイルがサーバー側で最後に変更された時刻を示します。形式は次のようになります。

Last-Modified: Fri, 12 May 2006 18:53:33 GMT

クライアントがリクエストしたとき。 HTTP プロトコルの規定によれば、ブラウザは If-Modified-Since ヘッダーをサーバーに送信して、この時間以降にファイルが変更されたかどうかを尋ねます:

If-Modified-開始日: Fri, 12 May 2006 18:53:33 GMT

サーバー側のリソースが変更されていない場合、空のコンテンツとともに HTTP 304 (Not Changed.) ステータス コードが自動的に返されるため、データ量が節約されます。伝わる。サーバー側のコードが変更されるか、サーバーが再起動されると、リソースが再発行され、最初のリクエストと同様のものが返されます。 これにより、リソースがクライアントに繰り返し送信されなくなり、サーバーが変更されたときにクライアントが最新のリソースを取得できるようになります。

2) 「Etag」とは何ですか?

HTTP プロトコル仕様では、ETag を「要求された変数のエンティティ値」として定義しています (第 14.19 章を参照)。 別の言い方をすると、ETag は Web リソースに関連付けることができるトークンです。一般的な Web リソースは Web ページですが、JSON または XML ドキュメントの場合もあります。サーバーは、トークンの内容とその意味を決定する責任を負い、それを HTTP 応答ヘッダーでクライアントに送信します。サーバーから返される形式は次のとおりです。

ETag: "50b1c1d4f775c61:df3"

クエリ更新形式は次のとおりです:

If-None-Match: W/"50b1c1d4f775c61:df3"

ETag が変更されていない場合、ステータス 304 を返し、その後は返されません。これは Last-Modified と同じです。 。私は主にブレークポイントのダウンロード中に役立つように Etag をテストしました。


Last-Modified と Etag はパフォーマンスの向上にどのように役立ちますか?
賢い開発者は、Last-Modified と ETag リクエストの http ヘッダーを一緒に使用し、クライアント (ブラウザーなど) のキャッシュを活用できます。サーバーは最初に Last-Modified/Etag タグを生成するため、サーバーは後でそれを使用してページが変更されたかどうかを判断できます。基本的に、クライアントは、このトークンをサーバーに返すことによって、その (クライアント側) キャッシュを検証するようにサーバーに要求します。
プロセスは次のとおりです:
1. クライアントがページをリクエストします (A)。
2. サーバーはページ A を返し、Last-Modified/ETag を A に追加します。
3. クライアントはページを表示し、Last-Modified/ETag とともにページをキャッシュします。
4. クライアントはページ A を再度リクエストし、最後のリクエストでサーバーから返された Last-Modified/ETag をサーバーに渡します。
5. サーバーは Last-Modified または ETag をチェックし、最後のクライアント要求以降にページが変更されていないと判断し、応答 304 と空の応答本文を直接返します。

次の例では、サーバー側のコードを使用してクライアント側のキャッシュを操作する方法を説明します。

http://www.bkjia.com/PHPjc/319427.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/319427.html技術記事多くの人は、まずサーバー キャッシュの側面からプログラムを最適化したいと考えます。たとえば、私が参加したいくつかのプロジェクトでは、キャッシュに基づいてさまざまなサーバー キャッシュ方法があります。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。