PHP とブラウザーのキャッシュ メカニズムの概要_PHP チュートリアル
ブラウザのキャッシュ ポリシーは、閲覧したファイルをローカル ディスクに一時的にキャッシュします。ユーザーが繰り返しページをリクエストすると、ページが変更されていないことがクライアントに通知され、キャッシュを呼び出すことができます。 では、クライアントにページ キャッシュがあるかどうかはどうすればわかるのでしょうか? HTTP プロトコル レベルから見ると、ブラウザがリクエストを送信すると、まず次の
HTTP ヘッダーが送信されます:
Connection Keep-Alive
Date Sun, 06 May 2012 18:00:36 GMT
Last-Modified Sun, 06 May 2012 17: 31:02 GMT
Etag ec1f629013925ab0fa4389ba926e8c06
Keep-Alive timeout=15, max=299
Server Apache/2.2.16 (Unix) DAV/2
Vary Accept-Encoding
次の 2 行に注意してください。ページキャッシュ情報:
Last-Modified Sun, 06 May 2012 17:31:02 GMT
Etag ec1f629013925ab0fa4389ba926e8c06 この場合、サーバーが 304 ステータス コードで応答すると、ブラウザは応答すると意識的にキャッシュからデータを読み取ります。ステータス コード 200 の場合、クライアント キャッシュがあるかどうかに関係なく、サーバーから読み取られます。
この理論的裏付けによれば、たとえば、ウェブマスター軍のクエリ結果のほとんどは、ajax を介して非同期的に取得され、二次アクセスのためにこの方法でキャッシュを変更できます。クライアントにキャッシュがある限り、304 応答ステータス コードをクライアントに送信し、プログラムの実行を終了します。
ブラウザによって送信されたリクエストには、If-Modified-Since と If-None-Match の 2 つのパラメータが含まれています。
If-Modified-Since は、データの最終変更時刻が特定の時刻値であるかどうかを尋ねることを意味します。次に、サーバーはデータの最終変更時刻を確認し、その時刻である場合は 304 ステータス コードを返します。ステータス コードを受信した後、クライアントはローカル キャッシュからキャッシュを直接読み取ります。この状況には前提条件があります。つまり、ブラウザーが If-Modified-Since パラメーターを送信する前にキャッシュ リソースがローカルに存在する必要があり、その値は最後のサーバーから返された Last-Modified 値です。
If-None-Match はサーバーから返された Etag 値によって生成され、サーバーによってデータの変更時間を確認するためにのみ使用されます。 If-Modified-Since と Last-Modified を組み合わせた方法はすべてのサーバーでサポートされているわけではないことを考慮して、ここでは etag を使用した実装のみを検討します。
PHP では、$_SERVER['HTTP_IF_NONE_MATCH'] を使用して、ファイルがブラウザーによってキャッシュされているかどうかを判断できます。コード スニペットは次のとおりです:
//etag タグを使用してキャッシュを制御します
コードは次のとおりです | コードをコピーします |
$etag = md5(date('Ymd')); if ($_SERVER['HTTP_IF_NONE_MATCH'] == $etag) { header('Etag:' . $ etag, true, 304); exit(); } else { header('Etag:' . $etag); |
}ここでは、現在の日付を使用して etag を生成します。このパラメータは必要に応じて変更できます。
追加の説明:
それが 304 応答であっても、データを送信する必要があるかどうかを判断するために接続を確立する必要があるため、実際にはサーバーに要求されます。
もう 1 つ。キャッシュのタイプは 200 応答です。キャッシュは接続を確立しませんが、要求は 200 ステータス コードで応答し、ローカルからキャッシュを直接読み取ります。

tomakephpapplicationsfaster、followthesesteps:1)useopcodecachinglikeopcacheTostoredscriptbytecode.2)最小化abasequeriesecachingingindexing.3)leveragephp7機能forbettercodeefficiency.4)

依存性注入(DI)は、明示的に推移的な依存関係によりPHPコードのテスト可能性を大幅に改善します。 1)DI分離クラスと特定の実装により、テストとメンテナンスが柔軟になります。 2)3つのタイプのうち、コンストラクターは、状態を一貫性に保つために明示的な式依存性を注入します。 3)DIコンテナを使用して複雑な依存関係を管理し、コードの品質と開発効率を向上させます。

DatabaseQueryoptimizationInpholvesseveralstrategESTOEnhancePerformance.1)selectonlynlynlyndorycolumnStoredatedataTransfer.2)useindexingtospeedupdataretrieval.3)revenmecrycachingtostoreres sultsoffrequent queries.4)

phpisusededemingemailsduetoitsbuilt-inmail()functionandsupportiveLibrarieslikephpmailerandswiftmailer.1)usethemail()functionforbasicemails、butithaslimitations.2)emploadforadvancedfeatureSlikelikelivableabableabuses.3)雇用

PHPパフォーマンスボトルネックは、次の手順で解決できます。1)パフォーマンス分析にXdebugまたはBlackfireを使用して問題を見つける。 2)データベースクエリを最適化し、APCUなどのキャッシュを使用します。 3)array_filterなどの効率的な関数を使用して、配列操作を最適化します。 4)bytecodeキャッシュ用のopcacheを構成します。 5)HTTP要求の削減や写真の最適化など、フロントエンドを最適化します。 6)パフォーマンスを継続的に監視および最適化します。これらの方法により、PHPアプリケーションのパフォーマンスを大幅に改善できます。

依存関係(di)inphpisadesignpatternativats anducesclassodulencies、拡張測定性、テスト可能性、および維持可能性。

cachingemprovesppperformancebystring of computationsorquickretrieval、還元装置の削減は、reducingerloadendenhancersponseTimes.efcectivestrategiesInclude:1)opcodecaching、compiledphpscriptsinmemorytoskipcompilation;


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

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

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

WebStorm Mac版
便利なJavaScript開発ツール
