一般的に、キャッシュの目的は、アクセスを高速化するためにデータを 1 か所に置くことです。しかし、何百 M ものデータをそこに保存できるでしょうか? もちろん、これは非現実的です。たとえば、ob_start() キャッシュ ページがオンになっている場合、ページのコンテンツは、ページ出力が自動的にクリアされるまで、ファイル ヘッダーを送信する前にメモリにキャッシュされます。 ob_get_contents の戻り値、または ob_end_clean によって表示されます。これは静的ページの生成によく使用され、テンプレートによく反映されます。PHP による静的ページの生成については、こちらの記事で詳しく説明されています。これは 1 つの方法ですが、これは一時的なものであり、問題に対する良い解決策ではありません。
さらに、ASP にはパブリックパラメータを保存できるオブジェクトアプリケーションがあり、これもキャッシュとみなされますが、PHP では、開発者がそのようなオブジェクトを作成するのをこれまで見たことがありません。 asp. Net のページ キャッシュ テクノロジはビューステートを使用し、キャッシュはファイルの関連付けです (必ずしも正確であるとは限りません)。ファイルが変更されずにタイムアウトしない場合は、キャッシュが読み取られて結果が返されます。これがこのソースコードを見てください:
リーリーこのキャッシュ クラスには 2 つの属性があります:
リーリー$cache_dir は、キャッシュされたファイルが配置される Web サイトのディレクトリに対する相対的な親ディレクトリです。 $expireTime (注 1) は、キャッシュされたデータの有効期限です。 データまたはファイルがロードされると、最初にキャッシュ ファイルが存在するかどうかが判断され、ファイルの最終変更時刻とキャッシュ時刻の合計が現在時刻より大きいかどうかが判断されます。有効期限が切れていない場合は false を返します。 false の場合は、元のデータを読み取り、キャッシュ ファイルに書き込み、データを返します。
次にプログラムを見てください:
リーリークラスが初めてインスタンス化されるとき、ファイル名をキャッシュするためのパラメーターを使用してデフォルト関数が構築されます。ファイルが存在しない場合は、編集権限を持つフォルダーを作成し、作成が失敗した場合に例外をスローします。次に、キャッシュ クラスの $cache_dir 属性をフォルダー名に設定します。すべてのキャッシュ ファイルはこのフォルダーの下にあります。
リーリーこれはクラス class のデストラクターです。デモンストレーションのために、キャッシュ クラス リソースが正常に解放されたことを示す文字列を出力します。
リーリーこのメソッドはエラー情報を出力します。
リーリーこのメソッドは、現在の URL の情報を返します。これは、主に x をキャッシュするために海外の CMS システムで行っているものです。 php?page=1,x。このようなファイルには php?page=2 など、キャッシュ クラス機能を拡張するためにここにリストされています。
リーリーcache_page メソッドは、キャッシュされたファイル名とデータをそれぞれ渡します。これは、最初に fopen を使用してファイルを開き、次にハンドルを呼び出してファイルをロックし、次に fwrite を使用してファイルを書き込みます。最後にハンドルを放すと、いずれかのステップでエラーが発生するとエラーがスローされます。 次のメモが表示されるかもしれません:
バイトストリームに書き込み、他の形式に書き込むにはシリアル化します。ちなみに、配列を使用したい場合は(MySQLデータベースからクエリの結果を選択できます)、シリアル化関数を使用して書き込みます。そして、unserialize を使用して元の型を読み取ります。
リーリーこれは、ファイル名でキャッシュを読み取る方法です。ファイルが存在しない場合、または読み取れない場合は、もちろん、非人道的な場合は、ファイルを再生成することができます。キャッシュ。
リーリーこの関数は、インターフェイス メソッドとして記述することができ、ファイルの最終更新時刻 + 有効期限が現在の時刻を超えているかどうかを判断します。ファイルが存在しない場合、または期限切れである場合は、ここでは簡単にするために、キャッシュ クラスを継承できます。データベースからデータを取得するための特定のクラス。
注 1: キャッシュ時間は、時間の状況に応じて自分で調整できます。キャッシュ時間 (つまり、キャッシュ キー) に注意してください。コントロールもキャッシュされます。これは CMS システムで広く使用されており、更新されるキーをキャッシュに保存するため、戦闘全体の制御が非常に簡単になります。
注 2: PHP5 はクラス継承のサポートを開始します。これは興味深いことです。構成されたクラスで Web サイトの残りの部分をグローバルに記述し、データ層と対話するクラス (MySQL と対話するクラスなど) を記述します。クラスはデータ対話クラスを継承しており、データベースを非常に簡単に読み取ることができます。これについては、時間があるときに詳しく説明します。
特記事項として、このクラスファイルはphp5以降用ですので、他のバージョンでは使用しないでください。