PHP は 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 専用ではありませんが、使い方が難しいです。

ホット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 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。
