1.CDNとは何ですか?
CDN の役割に関しては、電車の切符を購入する 8 年間の経験を使って説明できます:
8 年前には、電車の切符を販売するポイントはなく、12306.cn と会話することはさらに不可能でした。について。当時、鉄道の切符は駅の切符売り場でしか購入できず、私が住んでいた小さな郡では電車にアクセスできず、市内の駅で切符を購入する必要があり、時間がかかりました。郡から市内まで往復4時間のドライブは人生の無駄だ。その後、田舎の小さな町に電車の切符売り場ができて、市内の人々は切符を買うために一度に並ぶ必要がなくなり、とても便利になりました。 。
CDN は、ユーザーが Web サイトを閲覧すると、海南モバイル ユーザーのリクエストに応答するためにユーザーに最も近い CDN エッジ ノードを選択します。北京電信のコンピュータ ルームのサーバーまでは送信されません (発信局が北京電信のコンピュータ ルームに配置されていると仮定します)。
CDN の利点は明らかです。(1) CDN ノードは、事業者間および地域間アクセスの問題を解決し、アクセス遅延が大幅に減少します。(2) ほとんどのリクエストは CDN エッジ ノードで完了し、CDN が再生します。迂回の役割を果たし、元のサイトの負荷を軽減します。
2. キャッシュとは何ですか?
この記事では、CDN の背後にある高レベルのアーキテクチャについては詳しく説明しません。また、CDN がグローバル トラフィック スケジュール戦略を実装する方法についても説明しません。この記事は、CDN のインストール後にデータがどのようにキャッシュされるかに焦点を当てています。キャッシュは、時間と空間を交換する普遍的な例です。余分なスペースを使用することで、より高速な速度を得ることができます。
まず、CDN に Web サイトが接続されていないときに、ユーザーのブラウザがサーバーとどのように対話するかを見てみましょう:
ユーザーが Web サイトを閲覧すると、ブラウザは Web サイト内の画像やその他のファイルのコピーをローカルに保存できます。 , そのため、ユーザーが再度 Web サイトにアクセスしたときに、ブラウザーがすべてのファイルをダウンロードする必要がなくなり、ダウンロード量が削減されるということは、ページの読み込み速度が向上することを意味します。
CDN のレイヤーが途中で追加された場合、ユーザーのブラウザとサーバー間の対話は次のようになります。
クライアントのブラウザは、まずローカル キャッシュの有効期限が切れているかどうかを確認し、有効期限が切れた場合は、クライアント ブラウザへのリクエストを開始します。 CDN エッジ ノードは、ユーザーが要求したデータのキャッシュの有効期限が切れているかどうかを検出し、有効期限が切れていない場合は、ユーザーの要求に直接応答します。その後、CDN は最新のデータを取得するために、ソース リクエストを発信元サイトに送信する必要もあります。 CDN の典型的なトポロジ図は次のとおりです:
CDN が存在するシナリオでは、データがクライアント (ブラウザー) キャッシュと CDN エッジ ノード キャッシュの 2 つの段階を経ていることがわかります。詳細な分析
2. クライアント (ブラウザ) キャッシュ
クライアント キャッシュの欠点
クライアント キャッシュにより、サーバー リクエストが削減され、ファイルの繰り返しロードが回避され、ユーザー エクスペリエンスが大幅に向上します。ただし、Web サイトが更新されると (CSS、JS、画像ファイルの置き換えなど)、古いバージョンのファイルがブラウザーのローカルに保存されたままになり、予期しない結果が発生します。
かつて、ページが読み込まれるときに、ページ上の要素の位置がふらつき、ボタンのクリックに失敗することがありました。フロントエンド GG は、「キャッシュはクリアされましたか?」と尋ねてから、Ctrl キーを押すのが習慣でした。 +F5、すべてOKです。しかし、ブラウザのアドレス バーで Enter キーを押すだけ、または F5 を押すだけでは問題が解決されない場合があります。これらの 3 つの異なる操作方法がブラウザのキャッシュの更新方法を決定することをご存知ですか?
ブラウザはローカル ファイルを使用するかサーバー上の新しいファイルを使用するかをどのように判断するのでしょうか?いくつかの判断方法をご紹介します。
ブラウザキャッシュポリシー
Expires
Expires:Sat, 24 Jan 2015 20:30:54 GMT
HTTP 応答メッセージで Expires が設定されている場合、Expires が接続を期限切れにする前にそれを回避します。サーバ。このとき、ブラウザは、手持ちの素材が有効期限切れかどうかを判断するだけで、ブラウザにリクエストを送信する必要はありません。
キャッシュ制御: max-age
Expires メソッドは非常に優れていますが、毎回正確な時間を計算する必要があります。 max-age タグを使用すると、有効期限の処理が簡単になります。この情報は 1 週間しか使用できないと言えば十分です。
Max-age は、次のように秒単位で測定されます:
Cache-Control:max-age=645672
指定されたページは 645672 秒 (7.47 日) で期限切れになります。
Last-Modified
現在のファイルバージョンをブラウザに通知するために、サーバーは最終変更時刻を含むタグを送信します。例:
Last-Modified:Tue, 06 Jan 2015 08:26:32 GMT
次のようにブラウズします。ブラウザは、受信したファイルの作成時間を認識します。以降のリクエストでは、ブラウザは次のルールに従って検証します。
1. ファイル jquery.min.js が必要です。 2015 年 1 月 6 日火曜日 08:26:32 GMT 以降に変更されている場合は、私に送ってください。
2. サーバー: (ファイルの変更時間を確認してください)
3. サーバー: このファイルはそれ以降変更されていません。すでに最新バージョンを持っています。
4. ブラウザ: わかりました。ユーザーに表示します。
この場合、サーバーは 304 応答ヘッダーのみを返すため、応答データの量が削減され、応答速度が向上します。 304 応答については、次を参照してください。
http://www.cnblogs.com/ziyunfei/archive/2012/11/17/2772729.html
下の図は、F5 を押して更新した後に 304 応答ヘッダーを返すページを示しています。ページ。
ETag
通常、変更時間によるファイルの比較は機能します。ただし、サーバーの時計が間違っている、サーバーの時計が変更されている、夏時間 DST の到着後にサーバー時間が時間内に更新されていないなどの特殊な状況では、ファイル バージョンを比較する際に問題が発生します。変更された時間。
ETag を使用すると、この問題を解決できます。 ETag はファイルの一意の識別子です。ハッシュやフィンガープリントと同様に、各ファイルには、ファイルが変更されるたびに変更される個別の署名があります。
サーバーはETagタグを返します:
ETag:”39001d-1762a-50bf790757e00”
次のアクセスシーケンスは次のとおりです:
- ブラウザ: jquery.min.js ファイルが必要です。文字列「39001d-1762a-50bf790757e00」に一致しないものはありますか?
- サーバー: (ETag を確認してください...)
- サーバー: やあ、ここにあるバージョンも「39001d-1762a-50bf790757e00」です。すでに最新バージョンです
- ブラウザ: OK、ローカル キャッシュを使用できます
Last-modified と同様に、ETag はファイル バージョンの比較の問題を解決します。 ETag のレベルが Last-Modified よりも高いだけです。
追加タグ キャッシュタグは機能を停止することはありませんが、すでにキャッシュされているものを制御する必要がある場合があります。
l キャッシュ制御: パブリックとは、キャッシュされたバージョンがプロキシ サーバーまたは他の中間サーバーによって認識できることを意味します。
l キャッシュ制御: プライベートとは、このファイルがユーザーごとに異なることを意味します。ユーザー自身のブラウザのみがキャッシュできます。パブリック プロキシ サーバーはキャッシュを許可しません。
l キャッシュ制御: no-cache は、ファイルの内容をキャッシュすべきではないことを意味します。同じ URL に対して対応するコンテンツが変わるため、これは検索やページめくりの結果で非常に役立ちます。
- ブラウザ キャッシュの更新
- アドレス バーに URL を入力して Enter キーを押すか、[Go] ボタンをクリックします
ブラウザはリクエストが最も少ない Web ページのデータを取得し、すべてのコンテンツに対してローカル キャッシュを直接使用します有効期限が切れていないため、ブラウザへのリクエストが減少します。したがって、Expires タグと max-age タグはこのメソッドでのみ有効です。
- F5 またはブラウザの更新ボタンを押してください。
ブラウザは必要なキャッシュ ネゴシエーションをリクエストに添付しますが、ブラウザはローカル キャッシュを直接使用することは許可されていません。Last-Modified と ETag を有効にすることはできます。期限切れの場合は無効です。
- Ctrl+F5 を押すか、Ctrl を押して更新ボタンをクリックします
この方法は、キャッシュを使用せずに強制的に更新し、常に新しいリクエストを開始します。
- CDN キャッシュ
- CDN キャッシュのデメリット
- CDN キャッシュ戦略
CDN エッジ ノードのキャッシュ戦略はサービス プロバイダーによって異なりますが、通常は http 標準プロトコルに従い、http 応答ヘッダーの Cache-control: max-age フィールドを通じて CDN エッジ ノードのデータ キャッシュ時間を設定します。
クライアントが CDN ノードにデータを要求すると、CDN ノードはキャッシュされたデータの有効期限が切れているかどうかを判断し、期限切れでない場合はキャッシュされたデータをクライアントに直接返します。元のサイトへの戻りリクエスト。元のサイトから最新のデータを取得し、ローカル キャッシュを更新して、最新のデータをクライアントに返します。
CDN サービス プロバイダーは通常、ファイルのサフィックスとディレクトリに基づいて CDN キャッシュ時間を指定するための複数のディメンションを提供し、より洗練されたキャッシュ管理をユーザーに提供します。
CDN キャッシュ時間は「戻り率」に直接影響します。 CDN キャッシュ時間が短い場合、CDN エッジ ノード上のデータが失敗することが多く、その結果頻繁にオリジンに戻り、オリジン サイトの負荷が増加し、CDN キャッシュ時間が長すぎるとアクセス遅延も増加します。 、データ更新が遅いという問題が発生します。開発者は、特定のデータ キャッシュ時間管理を実行するには、特定のビジネスを追加する必要があります。
CDN キャッシュの更新
CDN エッジ ノードは、ブラウザ Ctrl+F5 を強制的に更新してブラウザのローカル キャッシュを無効にするのと比較して、開発者は「キャッシュを更新」インターフェイスを使用して次の目的を達成できます。 CDN エッジ ノード キャッシュをクリアします。このようにして、開発者は「キャッシュの更新」機能を使用して、データの更新後に CDN ノード上のデータ キャッシュを強制的に期限切れにし、クライアントがアクセス時に最新のデータを確実に取得できるようにすることができます。
以上がCDN キャッシュについて話すの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PHPSESSIONの障害の理由には、構成エラー、Cookieの問題、セッションの有効期限が含まれます。 1。構成エラー:正しいセッションをチェックして設定します。save_path。 2.Cookieの問題:Cookieが正しく設定されていることを確認してください。 3.セッションの有効期限:セッションを調整してください。GC_MAXLIFETIME値はセッション時間を延長します。

PHPでセッションの問題をデバッグする方法は次のとおりです。1。セッションが正しく開始されるかどうかを確認します。 2.セッションIDの配信を確認します。 3.セッションデータのストレージと読み取りを確認します。 4.サーバーの構成を確認します。セッションIDとデータを出力し、セッションファイルのコンテンツを表示するなど、セッション関連の問題を効果的に診断して解決できます。

session_start()への複数の呼び出しにより、警告メッセージと可能なデータ上書きが行われます。 1)PHPは警告を発し、セッションが開始されたことを促します。 2)セッションデータの予期しない上書きを引き起こす可能性があります。 3)session_status()を使用してセッションステータスを確認して、繰り返しの呼び出しを避けます。

PHPでのセッションライフサイクルの構成は、session.gc_maxlifetimeとsession.cookie_lifetimeを設定することで達成できます。 1)session.gc_maxlifetimeサーバー側のセッションデータのサバイバル時間を制御します。 0に設定すると、ブラウザが閉じているとCookieが期限切れになります。

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ホットトピック









