Web サイトの MySQL データベースが遅い場合は、Web サイトのキャッシュに注意する必要があります。 WordPress を使用したことのある友人は、WP Super Cache というプラグインがあることを知っています。このプラグインを使用すると、WordPress ページが最初に生成されたときに静的ページとして保存でき、データベースの読み取り時間を節約できます。ここで説明するのはこのテクニックです。
最初の質問は、PHP によって出力されたコンテンツを取得する方法です。出力コンテンツを取得する理由は単純で、出力コンテンツを保存しておき、訪問者が再び来たときに事前に保存されたコンテンツを提供できるからです。
これらの目標を達成することも実際には同様に簡単です。コンテンツが出力される前に関数 ob_start() を呼び出し、すべてのコンテンツが出力された後に ob_get_contents() を呼び出して出力コンテンツを取得し、次に ob_end_flush() を呼び出して終了を示すだけです。簡単な例は次のとおりです。 :
リーリープログラムの実行結果:
リーリー$cache 変数が以前の出力結果を保存していることがわかります。つまり、キャッシュを介して出力されるPHPの結果を削減することができます。
管理者に対してはキャッシュを有効にせず、訪問者に対してはキャッシュを有効にするという習慣が時々あります。現時点では、実際には実装は比較的簡単です。それぞれキャッシュの開始とキャッシュの終了を表す 2 つの関数、cache($id) と end_cache($id) を自分で書くことができ、コードは次のようになります (ここでは 3 つの関数が省略されています):
リーリー場合によっては、サイトでは必要に応じてモバイルデバイス向けに特別に設計されたページを確立することがあります。したがって、この場合は $id を展開する必要があります。これを拡張するには、別のパラメータを追加してモバイル デバイスのページをデスクトップ デバイスとは別のフォルダに保存し、これらのページで同じ $id を使用するなど、さまざまな方法があります。もう 1 つの方法は、ユーザーと組み合わせた元の $id を変更することです。 -モバイルデバイスのエージェント、必要なのは md5() だけです。私は前者のアプローチを好みます。もちろん、他にも同様のアプローチがあるはずです。要するに、中心となるアイデアは、キャッシュ タグ ($id) を別のものに設定し、ユーザーが戻ってきたときにそれらを区別できるようにすることです。
場合によっては、Web サイトに複数のユーザーの役割があり、対応するキャッシュを対応するユーザーに与える必要がある場合があります。もちろん、上記の原則に従ってください。
ob_start() と ob_end_flush() は再帰的に処理されます。つまり、ob_end_flush() を呼び出す前に、ob_start() を数回呼び出すことができます。例:
リーリープログラムの実行結果:
リーリー$output2 は、前の 3 つの出力をキャッシュします。