ホームページ バックエンド開発 PHPチュートリアル PHP は Apache 環境で HTTP キャッシュ プロトコルの原理分析とアプリケーション分析を使用します_PHP チュートリアル

PHP は Apache 環境で HTTP キャッシュ プロトコルの原理分析とアプリケーション分析を使用します_PHP チュートリアル

Jul 21, 2016 pm 03:40 PM
apache http php 分析する 利用 プロトコル 原理 応用 環境 キャッシュ 解析する 静的 ページ

静的ページ用の Etag もあります。

1. 最初のケースを見てみましょう: apache 静的ページ

Apache によってクライアントに送信される静的ページには、通常、Last-Modified タグと Etag が含まれており、これら 2 つのタグの値は、変更時刻と i ノードから取得されます。静的ファイルの。

以下は、Apache からインターセプトされてクライアントに返されるヘッダー

XML/HTML コードです
​​

コードをコピーします コードは次のとおりです:

最終更新日: Fri, 26 Jan 2007 01:53:34 GMT
ETag: " 3f9f640-318-cb9f8380"

検索エンジンが静的ファイルを好む理由は、これら 2 つの識別子により、ファイルが更新されたかどうかを判断できるためです

2 つ目は、PHP とその他の動的ページ

PHP は動的に生成されるため、PHP プログラムの時間に基づいてコンテンツを決定することができません。そのため、PHP は、クライアントに返すときにキャッシュ制御を含めません。キャッシュを使用すると、キャッシュのメカニズムを理解する必要があり、b と s の間の相互作用が減少し、帯域幅が減少し、サーバーの負荷が軽減されます...多くの利点があります。

3. キャッシュ制御の具体的な意味

まず、私がテストして理解したこれらのタグの意味を説明します

Cache-Control: リクエストと応答が続くキャッシュ メカニズムを指定します。要求メッセージまたは応答メッセージで Cache-Control を設定しても、別のメッセージの処理中のキャッシュ プロセスは変更されません。リクエスト中のキャッシュ命令には、no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached が含まれ、応答メッセージ内の命令には、public、private、no-cache、no が含まれます。 -store、no-transform、must-revalidate、proxy-revalidate、max-age。

各メッセージの指示の意味は次のとおりです:

Public は、応答を任意のキャッシュ領域にキャッシュできることを示します。

プライベートは、単一ユーザーの応答メッセージの全部または一部を共有キャッシュで処理できないことを示します。これにより、サーバーは、他のユーザーのリクエストには無効なユーザーからの部分的な応答のみを記述することができます。

no-cache は、リクエストまたは応答メッセージをキャッシュできないことを示します。

no-store は、重要な情報が意図せずに公開されるのを防ぐために使用されます。リクエスト メッセージで送信すると、リクエスト メッセージと応答メッセージの両方でキャッシュが使用されます。

max-age は、クライアントが指定された時間 (秒) を超えない存続期間を持つ応答を受信できることを示します。

min-fresh は、クライアントが現在の時間に指定された時間を加えた時間よりも短い応答時間で応答を受信できることを示します。

max-stale は、クライアントがタイムアウト期間を超えて応答メッセージを受信できることを示します。 max-stale メッセージの値を指定すると、クライアントはタイムアウト期間の指定された値を超える応答メッセージを受信する可能性があります。

phpの使用法:

出力前にheader()を使用します(ob_start()を使用する場合、ヘッダーをプログラム内のどこにでも配置できます)

PHPコード
コードをコピーします コードは次のとおりです:

header( 'Cache-Control: max-age=8');

max-age=8 は、最大有効期間が 8 秒であることを意味します。8 秒を超える場合、ブラウザはサーバーにアクセスして読み取る必要があります。この時間はユーザーの読み取りページから始まりますが、Expires は絶対時間です。

Expires: キャッシュの有効期限が切れる絶対時間。指定された時点を過ぎると、ブラウザはキャッシュを認識せず、サーバーにアクセスして最新のキャッシュを再度リクエストします。

Last-Modified: ドキュメントの最終変更時刻。その素晴らしい用途は次のとおりです。 1

静的ファイルの場合、クライアントはキャッシュ内の時刻を送信し、そこにあることが判明すると、Apache がそれを比較します。は変更はなく、ヘッダーを直接返します。ステータス コードは 304 で、バイト数は非常に小さいです (上級バージョンでは、ファイルが変更されたかどうかを判断するための比較 Etag も追加されます)

2 php 動的ファイル:

クライアントは比較時間を送信し、変更されたかどうかをphpが判断します。なぜ1024バイトが返されるかは不明です。あなたのphpは非常に大きいので、1024のみを返すため、クライアントはサーバーに応じて変更時間を自動的に表示します。

注: Last-Modified ヘッダーがない場合、Cache-Control と Expires も機能しますが、各リクエストは 1024

4 ではなく、実際のファイル バイト数を返す必要があります。どうですか?

静的ページ ドン'心配する必要はありません。静的ページのキャッシュをより適切に制御したい場合、Apache には適切に制御できるモジュールがいくつかあります。

2 つのタイプがあります:

1.このタイプのページの特徴は、最初のリリース後にいくつかの変更があり、時間が経っても基本的に変更されないことです。制御戦略は次のとおりです。 1. 最初のリリースに対して Last-Modified を送信し、max-age を 1 日に設定し、変更後に Last-Modified を更新します。max-age 時間は変更の数に応じて通常になります。これはさらに面倒に思えますが、次に変更される可能性のある時刻を予測し、Expires を使用して有効期限が切れるおおよその時刻を指定することもできます。

コードをコピーします

。は次のとおりです:

//header('Cache-Control: max-age=86400');// 1 日分のキャッシュ
header('Expires: Mon, 29 Jan 2007 08:56:01 GMT');// 有効期限を指定する
header ('Last-Modified: '.gmdate('D, d M Y 01:01:01',$time).'GMT');//グリニッジ時間、$time はファイル追加時のタイムスタンプです

2 頻繁に変更されるページ

は、BBS やフォーラム プログラムと似ており、キャッシュの主な機能は、ユーザーが頻繁にリストを更新することを防ぐことであり、サーバー データベースに負担がかかります。更新の適時性を確保し、キャッシュを確実に利用できるようにするために必要です。

ここでは一般に Cache-Control を使用して制御し、max-age はフォーラムへの投稿頻度に応じて柔軟に制御できます。

PHPコード
コードをコピー コードは次のとおりです:

header('Cache-Control: max-age=60');//1分間キャッシュします
header('Last-Modified: '.gmdate( 'D, d M Y 01:01:01',$time).'GMT');//グリニッジ時間、$time は投稿の最終更新タイムスタンプです

さらに 5 つ

1更新、移動、強制更新の違い

一部のブラウザでは、Ctrl+F5 によるページの強制更新がサポートされています。

Go to: ユーザーがリンクをクリックすると、そのリンクに移動します。Last-Modified がある場合は、サーバーと通信しません。パケット キャプチャ ツールを使用して確認できます。送信されたバイトが 0 バイトであることを確認します。キャッシュの有効期限が切れると、F5 リフレッシュ アクションが実行されます。

更新 (F5): この更新も、キャッシュに Last-Modified があるかどうかに基づいて決定され、最終更新時刻がない場合は 304 または 1024 (php) に転送されます。サーバーに送信して実際のドキュメント サイズを読み取って返します

強制更新: キャッシュ メカニズムを完全に放棄し、サーバーにアクセスして最新のドキュメントを読み取り、次のようにヘッダーをサーバーに送信します

XML/HTML コード
コードをコピーします コードは次のとおりです:

キャッシュ制御: キャッシュなし

2 デバッグツール

ブラウザとサーバー間の対話を表示するためのより良いツールは、httpwatch pro (現在のバージョン) です。 4.1、IE7 をサポート

分析できる他のプロキシ パケット キャプチャ ツール、http デバッグがあります。これまで使用したことはありませんでしたが、2000 に付属のネットワークである tcp パケット キャプチャ ツールもあります。 2000 に付属のネットワーク モニタは http 専用ではありませんが、使い方が難しいです。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/321283.html技術記事静的ページ用の Etag もあります。 1. 最初の状況を見てみましょう: Apache の静的ページ。Apache によってクライアントに送信される静的ページには、通常、Last-Modified タグと Etag が含まれています。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHPの継続的な使用:その持久力の理由 PHPの継続的な使用:その持久力の理由 Apr 19, 2025 am 12:23 AM

まだ人気があるのは、使いやすさ、柔軟性、強力なエコシステムです。 1)使いやすさとシンプルな構文により、初心者にとって最初の選択肢になります。 2)Web開発、HTTP要求とデータベースとの優れた相互作用と密接に統合されています。 3)巨大なエコシステムは、豊富なツールとライブラリを提供します。 4)アクティブなコミュニティとオープンソースの性質は、それらを新しいニーズとテクノロジーの傾向に適応させます。

IISとPHPの互換性:ディープダイビング IISとPHPの互換性:ディープダイビング Apr 22, 2025 am 12:01 AM

IISとPHPは互換性があり、FastCGIを通じて実装されています。 1..phpファイル要求を構成ファイルを介してFastCGIモジュールに転送します。 2. FASTCGIモジュールは、PHPプロセスを開始して、パフォーマンスと安定性を改善するための要求を処理します。 3。実際のアプリケーションでは、構成の詳細、エラーデバッグ、パフォーマンスの最適化に注意する必要があります。

session_start()が複数回呼び出されるとどうなりますか? session_start()が複数回呼び出されるとどうなりますか? Apr 25, 2025 am 12:06 AM

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

NginxとApache:重要な違​​いを理解する NginxとApache:重要な違​​いを理解する Apr 26, 2025 am 12:01 AM

NginxとApacheにはそれぞれ独自の利点と欠点があり、選択は特定のニーズに基づいている必要があります。 1.Nginxは、非同期の非ブロッキングアーキテクチャのため、高い並行性シナリオに適しています。 2。Apacheは、モジュラー設計のため、複雑な構成を必要とする低変動シナリオに適しています。

作曲家:AIを介したPHP開発の援助 作曲家:AIを介したPHP開発の援助 Apr 29, 2025 am 12:27 AM

AIは、作曲家の使用を最適化するのに役立ちます。特定の方法には次のものが含まれます。1。依存関係管理の最適化:AIは依存関係を分析し、最適なバージョンの組み合わせを推奨し、競合を減らします。 2。自動コード生成:AIは、ベストプラクティスに準拠したComposer.jsonファイルを生成します。 3.コードの品質を改善する:AIは潜在的な問題を検出し、最適化の提案を提供し、コードの品質を向上させます。これらの方法は、開発者が効率とコードの品質を向上させるのに役立つ機械学習および自然言語処理技術を通じて実装されています。

session_start()関数の重要性は何ですか? session_start()関数の重要性は何ですか? May 03, 2025 am 12:18 AM

session_start()iscrucialinphpformangingusersions.1)itInitiateSanewsessionifnoneExists、2)resumesanexistingsession、および3)SetSessionCookieforcontinuityAcrossRequests、ApplicationslicationSliviseSlikeUserauthicationAnticatent。

誇大広告を超えて:Apacheの現在の役割の評価 誇大広告を超えて:Apacheの現在の役割の評価 Apr 21, 2025 am 12:14 AM

Apacheは、今日のテクノロジーエコシステムで依然として重要です。 1)Webサービスとビッグデータ処理の分野では、Apachehttpserver、Kafka、およびHadoopが依然として最初の選択肢です。 2)将来的には、競争力を維持するために、クラウドのネイティブ、パフォーマンスの最適化、エコシステムの簡素化に注意を払う必要があります。

糸でpyflinkジョブを送信するときにエラーを報告するのはなぜですか? 糸でpyflinkジョブを送信するときにエラーを報告するのはなぜですか? Apr 19, 2025 pm 02:06 PM

PyflinkのジョブをYARNに送信するときにPythonスクリプトが見つからない理由の分析Yarnを介してPyflinkジョブを提出しようとすると、遭遇する可能性があります...

See all articles