HTTPプロトコルとキャッシュの原理分析についての深い理解
3.2 キャッシュの実装原理
3.2.1 Webキャッシュとは
WEBキャッシュ(キャッシュ)は、Webサーバーとクライアントの間にあります。
キャッシュは、HTML ページ、画像、ファイルなどの出力コンテンツのコピーをリクエストに保存します。次のリクエストが来たとき、同じ URL の場合、キャッシュはそのコピーを直接使用して応答します。リクエストをソースサーバーに再度送信する代わりに、アクセスリクエストを送信します。
HTTP プロトコルは、WEB キャッシュが可能な限り適切に機能するように、関連するメッセージ ヘッダーを定義します。
3.2.2 キャッシュの利点
応答遅延の短縮: リクエストはオリジンサーバーではなくキャッシュサーバー (クライアントに近い) から応答されるため、このプロセスにかかる時間が短縮され、Web サーバーの応答が速くなったように見えます。
ネットワーク帯域幅消費量の削減: レプリカが再利用されると、クライアントの帯域幅消費量が削減され、顧客は帯域幅コストを節約し、帯域幅要件の増加を制御し、管理が容易になります。
3.2.3 キャッシュに関連する HTTP 拡張メッセージヘッダー
Expires: 応答コンテンツの有効期限が切れる時刻、グリニッジ標準時 GMT を示します
Cache-Control: キャッシュされたコンテンツのより詳細な制御
Last-Modified: 応答でリソースが最後に変更された時刻
ETag: 応答内のリソースのチェック値。一定期間サーバー上で一意に識別されます。
Date: サーバー時間
If-Modified-Since: クライアントがアクセスしたリソースが最後に変更された時間 (Last-Modified と同じ)。
If-None-Match: クライアントがアクセスしたリソースのチェック値。ETag と同じです。
3.2.4 クライアントキャッシュを有効にするための共通プロセス
サーバーがリクエストを受信すると、200OK でリソースの Last-Modified ヘッダーと ETag ヘッダーを送り返します。クライアントはリソースをキャッシュに保存し、記録します。これら 2 つの属性です。クライアントが同じリクエストを送信する必要がある場合、リクエスト内に If-Modified-Since と If-None-Match という 2 つのヘッダーが含まれます。 2 つのヘッダーの値は、応答の Last-Modified ヘッダーと ETag ヘッダーの値です。サーバーは、これら 2 つのヘッダーによってローカル リソースが変更されていないと判断し、クライアントはそれを再度ダウンロードする必要がなく、304 応答を返します。共通のプロセスを以下の図に示します。
3.2.5 Web キャッシュのメカニズム
HTTP/1.1 でのキャッシュの目的は、多くの場合、送信されるリクエストの数を減らすことであり、多くの場合、キャッシュはありません。完全な応答を送信する必要があります。前者はネットワーク ループの数を減らします。HTTP はこの目的で「有効期限」メカニズムを利用します。後者はネットワーク アプリケーションの帯域幅を削減します。HTTP はこの目的で「検証」メカニズムを使用します。
HTTP は 3 つのキャッシュ メカニズムを定義します:
1) 鮮度: 応答メッセージをソース サーバーで再チェックできるようにし、サーバーとクライアントによって制御できます。たとえば、Expires 応答ヘッダーは、ドキュメントが利用できなかった時間を示します。 Cache-Control の max-age フラグは、最大キャッシュ時間を示します。
2) 検証: キャッシュされた応答がまだ利用可能かどうかを確認するために使用されます。たとえば、応答に Last-Modified 応答ヘッダーがある場合、キャッシュは If-Modified-Since を使用して変更されたかどうかを判断し、状況に応じてリクエストを送信するかどうかを決定できます。3) 無効化:別のリクエストがキャッシュを通過すると、多くの場合、副作用が発生します。たとえば、URL がキャッシュされた応答に関連付けられているが、その後に POST、PUT、および DELETE リクエストが続く場合、キャッシュは期限切れになります。
3.3 ブレークポイント再開とマルチスレッドダウンロードの実装原理
HTTP プロトコルの GET メソッドは、リソースの特定の部分のみのリクエストをサポートします;
206 Partial Content 部分コンテンツ応答;
Range 要求されたリソース範囲;
Content-Range 応答のリソース範囲。
接続が切断されて再接続されると、クライアントはブレークポイントの再開を達成するためにリソース全体を再要求するのではなく、リソースの未ダウンロードの部分のみを要求します。
ブロックされたリクエストリソースの例:
Eg1: Range: bytes=306302-: このリソースの306302バイトから最後までの部分をリクエストします。
Eg2: Content-Range: bytes 306302-604047/604048: 応答で示されます。これはリソースの 306302 ~ 604047 バイトを伝送し、リソースには合計 604048 バイトがあります。クライアントは、同じリソースの異なるフラグメントを同時に要求することで、特定のリソースの同時ブロック ダウンロードを実現します。高速ダウンロードの目的を達成するため。現在普及している FlashGet と Thunder は基本的にこの原理を使用しています。
マルチスレッドダウンロードの原理:
ダウンロード ツールは、HTTP リクエストを発行する複数のスレッドを開きます。
各 http リクエストはリソース ファイルの一部のみをリクエストします: Content-Range: バイト 20000-40000/47000。各スレッドのダウンロードしたファイルをマージします。
3.4 https通信プロセス
3.4.1 https
HTTPS(正式名称:Hypertext Transfer Protocol over Secure Socket Layer)とは、簡単に言えば、セキュリティを目的としたHTTPチャネルです。つまり、HTTP に SSL 層が追加されています。HTTPS のセキュリティ基盤は SSL です。暗号化の詳細については、「SSL」を参照してください。 下の図を参照してください:httpsで使用されるポート番号は443です。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









PHPはインターネット上で広く使われているプログラミング言語であり、HTTPプロトコルはインターネットを支える重要なプロトコルです。初心者にとって、HTTP プロトコルを学ぶことは、PHP プログラミングを開始するための重要なステップです。この記事では、初心者が HTTP プロトコルをよりよく理解して使いこなし、より効果的に PHP アプリケーションを開発できるように、HTTP プロトコルの基本概念、リクエスト メソッド、ステータス コード、実際の応用まで、HTTP プロトコルの具体的な内容を紹介します。 HTTP プロトコルの基本概念 HTTP プロトコルは HyperText

HTTP プロトコルのステータス コードの詳細な解釈: Web サイト開発にステータス コードが重要である理由 インターネットの急速な発展に伴い、Web サイト開発の重要性がますます高まっています。 Web サイトの開発では、HTTP プロトコルが重要な役割を果たします。リクエストとレスポンスを通じてデータを転送するための、ブラウザとサーバー間の通信仕様を定義します。 HTTP ステータス コードはこのプロセスの一部であり、リクエストの処理を示すために使用されます。この記事では、HTTP プロトコルのステータス コードの役割と重要性について詳しく説明します。 HTTPステータスコードは3桁の数字です

HTTP プロトコルは、現代のインターネットで最も一般的に使用されているアプリケーション層プロトコルの 1 つで、クライアント/サーバー モデルに基づいており、クライアントとサーバーの間でデータを送信するために使用されます。 HTTP プロトコルはリクエストと応答を通じて通信します。メッセージ ヘッダーは HTTP プロトコルの非常に重要な部分であり、リクエストと応答でメタデータを送信するために使用されます。この記事では、HTTP プロトコル ヘッダーの役割について説明します。まず、HTTP プロトコル ヘッダーを使用してリクエスト関連の情報を伝達できます。クライアントがサーバーにリクエストを送信すると、メッセージ ヘッダーのフィールドが

Nginx リバース プロキシ サーバーは、HTTP リクエストと応答を処理するだけでなく、HTTP プロトコルのサポートとパフォーマンスの最適化も提供する強力な Web サーバーです。この記事では、Nginx リバース プロキシ サーバーの HTTP プロトコルのサポートとパフォーマンスの最適化について詳しく説明し、いくつかのコード例を示します。 1. HTTP プロトコルはリクエスト処理をサポートしており、Nginx リバース プロキシ サーバーはクライアントから HTTP リクエストを受信し、バックエンド サーバーに転送できます。リクエストごとに、Nginx は

ワーカーマン開発: HTTP プロトコルに基づいたバッチ ファイル処理システムを実装する方法、具体的なコード例が必要です インターネットとデジタル技術の発展に伴い、特に企業において、データ処理の重要性がますます高まっています。場合によっては、写真、ビデオ、オーディオなどの大量のファイルを処理する必要があることがあります。現時点では、手動操作は時間と労力がかかるだけでなく、エラーも発生しやすくなります。この記事では、バッチ ファイル処理システムを実装する方法について説明します。 Workerman は PHP で開発された高性能ソケットです

PHP は、Web アプリケーションの構築に使用されるサーバー側スクリプト言語として広く使用されています。 Web アプリケーションでは、HTTP プロトコルとステータス コードが必要な基礎知識です。この記事では、PHP の HTTP プロトコルとステータス コードの基礎知識を説明します。 HTTP プロトコルは、ハイパーテキストを送信するためのプロトコルであり、Web 開発で広く使用されています。 HTTP プロトコルを介して、Web ブラウザと Web サーバーはインターネット経由で通信し、Web ブラウザは HTTP リクエストを Web サーバーに送信します。

Workerman 開発: HTTP プロトコルに基づいて Web サーバーを実装する方法、具体的なコード例が必要です はじめに: インターネットの急速な発展に伴い、Web 開発の重要性がますます高まっています。 Webサービスを提供する基盤となるのがWebサーバーです。 Workerman は、ネットワーク通信サーバーを開発できるだけでなく、HTTP プロトコルに基づいた Web サーバーを実装できる高性能 PHP 開発フレームワークです。この記事では、Workerman を使用して単純な HTTP Web サービスを開発する方法を紹介します。

403 ステータス コード分析: HTTP プロトコルの禁止エラーに対処する方法 はじめに: オンラインの世界では、Web ページを閲覧したりリクエストを送信したりするときに、さまざまなエラーが発生することがよくあります。その 1 つは、アクセス禁止エラーを示す 403 ステータス コードです。この記事では、403 エラーを分析し、読者がそのような問題にうまく対処できるようにするためのいくつかの対処戦略を提供します。 1. 403 ステータスコードの意味と理由 403 ステータスコードは、HTTP プロトコルにおけるクライアントエラーステータスコードであり、サーバーがクライアントの要求を理解していることを示しますが、
