0

拡張子が.phpのテンプレートがあります。このテンプレートには、いくつかのphp変数とともにhtmlmaarkupが含まれています。こんな感じです。

include_once VIEWDIR . 'documentation/common/header.php';

include_once VIEWDIR . 'documentation/content/'.$this->view.'.php';

include_once VIEWDIR . 'documentation/common/leftsidebar.php';

include_once VIEWDIR . 'documentation/common/rightsidebar.php';

これが私がキャッシュしている方法です。

ob_start();
include_once('template.php');
$templateCache = ob_get_clean();

次に、これを.cacheファイルに保存します。

問題は、キャッシュからテンプレートをロードすると、php変数を読み取れないことです。

私は何か間違ったことをしていることを知っていますが、それを捕まえることができません。助けてください。

4

2 に答える 2

1

一般的なキャッシング

定義上、キャッシングはそれぞれの変数の値をキャッシュします。

テンプレートで使用されている変数の1つが値を変更したときに、キャッシュを削除します。

このようにして、キャッシュは新しい値で再生成され、両方の長所があります。

  • 一方では、キャッシュヒットが発生した場合のより高速なHTTP回答
  • 反対側では、一部の値が変更されたときのページの動的性

あなたの場合のキャッシング

免責事項:これは必ずしもあなたの問題をショーケースとして使用するわけではありません。より的確な回答が必要な場合は、質問を改善する必要があります

テンプレートに頻繁に変更される領域と変更されない領域がある場合は、頻繁に変更されない部分のみを個別にキャッシュし、変更変数を含むテンプレート全体を全体としてキャッシュしないでおく必要があります。

システムが適切に動作するように、上記のように個々のキャッシュを処理することを忘れないでください。

したがって、ファイル全体をキャッシュする代わりに、次のように書き直します。

echo $cache->get(VIEWDIR . 'documentation/common/header.php');//<-- this is a cache
include_once VIEWDIR . 'documentation/content/'.$this->view.'.php');
echo $cache->get(VIEWDIR . 'documentation/common/leftsidebar.php');//<-- this is a cache
echo $cache->get(VIEWDIR . 'documentation/common/rightsidebar.php');//<-- this is a cache

テンプレートの個々の部分をキャッシュ自体として扱います。

于 2012-12-22T10:50:09.223 に答える
1

それらをキャッシュしないでください。
「キャッシング」の方法はキャッシングではありませんが、それが主な問題ではありません。
問題は、テンプレートまたはその出力をキャッシュする理由があるとは思えないということです。

したがって、「キャッシング」を行わずに、すべてをそのままにしておきます。

于 2012-12-22T10:52:04.063 に答える