0

私はPHPが初めてで、(初めて)キャッシュを試してみたいので、ウェブサイトを作成しました。

  • 動的ホームページ
  • 動的ポートフォリオ ページ
  • 動的連絡先ページ
  • ページについて静的
  • 静的管理ページ

だから私はキャッシングに関するチュートリアルを読んで、独自のキャッシングシステムを作ろうとしました:

要求されたページに基づいてファイルキャッシュを使用し、ページが要求されると、キャッシュシステムはcache directoryキャッシュファイルがまだない場合にキャッシュがあるかどうかを確認し、php スクリプトからのすべての出力 (html) を書き込みます (この場合は からの出力output buffer)特定のID(URIに基づく)に対応するキャッシュファイルがある場合はinclude_once()、htmlファイルのみです。

それから私は CodeIgniter を読みました (私は CI を使用してこのウェブサイトを作成します) キャッシュ用の APC があると言い、次に APC についてもう一度読みました。

私がこれまでに得たもの:

  • リクエストが多い場合、ファイルのキャッシュはおそらく遅くなります(これが本当かどうかはわかりませんが、検索エンジンからどこかで読んでいます)
  • APCは速い

しかし、私はまだどちらを使用すべきか混乱しています。私は共有ホスティングを使用しています

4

1 に答える 1

1

PHP アプリケーションで最も関連性の高いキャッシュのレベル:

  • ファイル/スクリプトのキャッシュ - オペレーティング システムが実際にこれを大部分行います。ファイルが開かれると、OS レベルのキャッシュに追加されます。ファイルが操作されるか、OS が他のプロセスのためにメモリを解放する必要があるまで、そこにとどまります。自家製の PHP ソリューションは、これに代わるものではありません。

  • オペコードのキャッシュ- 機能するために、PHP はスクリプトを解析してオペコードにコンパイルする必要があります。APC のようなメカニズムは、キャッシュがオーバーフローしない限り、Apache によって実行されるすべての PHP スクリプトのオペコードをキャッシュします。APC の上に構築された自作の PHP ソリューションは部分的にこれを行うことができますが、APC は既にそれを行っているので、気にしないでください。

  • クエリ キャッシング- 頻繁には変更されない大量のデータにスクリプトがアクセスする場合、または更新とそれらの更新の表示の間の遅延が許容できる場合、複雑なクエリからの結果をキャッシュすることは有益です。APC 上に構築された自家製の PHP ソリューションは、このレベルでは受け入れられ、有益です。ただし、ここではデータベース レベルのソリューションも適切であり、多くの場合、より適切です。

  • 出力キャッシュ- ページの大部分が決定論的である場合、および/またはクエリ キャッシュに適用されるのと同じ種類の待機時間が許容される場合は、出力バッファリングと APC を使用してスクリプトの出力全体をキャッシュできます。ここでは、APC 上に構築された独自の PHP ソリューションを使用できますが、通常は必要ありません。ページが静的な場合、おそらく再計算の手間が省けません。また、動的な場合は、通常、とにかくページを再レンダリングすることをお勧めします。

専用または仮想専用環境では、APC (または同様のもの) を自分でインストールする必要があります。ただし、共有ホスティング環境では、APC がインストールされている可能性が非常に高くなります。そうでなければ、とにかく自分でインストールすることはできません。

また、私自身の不確実性のため、共有環境で APC を使用してクエリや出力キャッシュを実行しないことをお勧めします。APC が仮想ホストごとにキャッシュを分離するかどうかはわかりません。たとえそうだとしても、私のサイトが本当に別の仮想ホストであるとは思いません。

于 2013-05-24T15:24:35.613 に答える