Question

J'ai essentiellement une page PHP qui appelle un autre code HTML à restituer via la méthode d'un objet. Cela ressemble à ceci:

MA PAGE PHP:

// some content...

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

// some content...

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

Le premier appel de méthode est mis en cache, mais j'ai besoin de renderSomeHTML () pour être légèrement différent en fonction de son emplacement dans la page. J'ai essayé de passer à $ GLOBALS, mais la valeur ne change pas, alors je suppose qu'elle est mise en cache.

N'est-ce pas possible sans passer un argument par la méthode ou en ne la mettant pas en cache? Toute aide est appréciée. Ce n'est pas mon application, c'est Magento.

Modifier:

C’est Magento, et il semble utiliser memcached. J'ai essayé de passer un argument par renderSomeHTML (), mais lorsque j'utilise func_get_args () sur l'inclusion PHP à restituer, ce qui en sort n'est pas ce que j'y ai mis.

Modifier:

Plus loin dans la ligne, j'ai pu "invalider". le cache en appelant une méthode différente qui extrait le même contenu et en transmettant un argument qui désactive la mise en cache. Merci à tous pour votre aide.

Était-ce utile?

La solution

Évidemment, vous ne pouvez pas. L'intérêt de la mise en cache est que la "chose" que vous mettez en cache ne va pas changer. Donc soit vous:

  • fournir un paramètre
  • mise en cache d'aviod
  • invalide le cache lorsque vous définissez un paramètre différent

Ou vous réécrivez vous-même le mécanisme de cache afin de prendre en charge certaines liaisons dynamiques.

Autres conseils

Le chaching est géré différemment par différents frameworks, vous devez donc nous aider avec quelques informations supplémentaires. Mais je me demande aussi si vous pourriez passer cela comme paramètre au lieu d'utiliser $ GLOBALS.

$this->renderSomeHTML(true);

Votre question ne semble pas claire, mais la mise en cache signifie quasiment "stockée afin que nous n'ayons plus à la calculer". Si vous souhaitez que le contenu diffère, vous devez mettre en cache plus de résultats et choisir le bon objet mis en cache à renvoyer.

Besoin de plus d’informations pour une meilleure réponse. Qu'est-ce que la mise en cache du document, Smarty? Et qu'entendez-vous par "son emplacement dans la page"? Qu'est-ce que c'est?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top