0

基本的に、オブジェクトのメソッドを介してレンダリングされる他の HTML を呼び出す PHP ページがあります。次のようになります。

私のPHPページ:

// some content...

<?php
    $GLOBALS["topOfThePage"] = true;
    $this->renderSomeHTML();
?>

// some content...

<?php
    $GLOBALS["topOfThePage"] = false;
    $this->renderSomeHTML();
?>

最初のメソッド呼び出しはキャッシュされますが、renderSomeHTML() がページ内の位置に基づいてわずかに異なる表示をする必要があります。$GLOBALS にパススルーしてみましたが、値が変わらないので、キャッシュされていると思います。

メソッドを介して引数を渡すか、キャッシュしないと、これは不可能ですか? どんな助けでも大歓迎です。これは私のアプリケーションではありません。Magento です。

編集:

これは Magento で、memcached を使用しているようです。renderSomeHTML() を介して引数を渡そうとしましたが、PHP インクルードで func_get_args() を使用してレンダリングすると、出力されたものとは異なります。

編集:

さらに下に進むと、同じコンテンツを取得する別のメソッドを呼び出し、キャッシュをオフにする引数を渡すことで、キャッシュを「無効化」することができました。助けてくれてありがとう。

4

3 に答える 3

3

明らかに、できません。キャッシングの全体的なポイントは、キャッシュする「もの」が変更されないことです。だからあなたはどちらか:

  • パラメータを指定します
  • aviodキャッシング
  • 別のパラメータを設定すると、キャッシュが無効になります

または、キャッシュメカニズムを自分で書き直して、動的バインディングをサポートします。

于 2008-09-17T20:49:59.930 に答える
1

チャッシングはフレームワークごとに異なる方法で処理されるため、さらに詳しい情報を提供していただく必要があります。しかし、使用する代わりにそれをパラメーターとして渡すことができるかどうかも疑問です$GLOBALS.

$this->renderSomeHTML(true);
于 2008-09-17T20:47:36.830 に答える
0

あなたの質問は不明確に思えますが、キャッシュはほとんど「保存されているので、再度計算する必要はありません」という意味です。コンテンツを異ならせたい場合は、より多くの結果をキャッシュし、正しいキャッシュオブジェクトを選択して送り返す必要があります。

より良い答えを与えるために、より多くの情報が必要です。Smarty、ドキュメントのキャッシュとは何ですか?そして、「ページ内のその場所」とはどういう意味ですか?それは何ですか'?

于 2008-09-17T20:51:16.590 に答える