Wie kann ich die übergabe von Variablen durch die im Cache gespeicherten Inhalt in PHP?

StackOverflow https://stackoverflow.com/questions/87468

  •  01-07-2019
  •  | 
  •  

Frage

Im wesentlichen habe ich eine PHP-Seite, die nennt sich einige andere HTML gerendert werden durch eine Objekt-Methode.Es sieht aus wie diese:

MEINE PHP-SEITE:

// some content...

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

// some content...

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

Die ersten Aufruf der Methode wird zwischengespeichert, aber ich brauche renderSomeHTML (), um die Anzeige etwas anders basierend auf seiner Position in der Seite.Ich habe versucht, vorbei an bis zu $GLOBALS, aber der Wert ändert sich nicht, also bin ich vorausgesetzt, es wird immer zwischengespeichert.

Ist dies nicht möglich, ohne übergabe eines Arguments durch die Methode oder durch nicht Zwischenspeicherung es?Jede Hilfe wird geschätzt.Das ist nicht meine Anwendung -- es ist Magento.

Edit:

Dies ist Magento, und es sieht auch mithilfe von memcached.Ich habe versucht, die übergabe eines Arguments durch renderSomeHTML(), aber wenn ich func_get_args (), die auf der PHP-include-dargestellt werden, was dabei heraus kommt ist nicht das, was ich in es.

Edit:

Weiter unten in der Linie war ich in der Lage zu "erlöschen" der cache durch den Aufruf einer anderen Methode gezogen, dass die gleichen Inhalte und übergeben ein argument, das deaktiviert Zwischenspeicherung.Danke an alle für Ihre Hilfe.

War es hilfreich?

Lösung

Natürlich können Sie nicht.Der ganze Punkt des Zwischenspeicherns ist, dass die 'Sache', die Sie cache ist nicht zu ändern.So Sie entweder:

  • bieten parameter
  • aviod caching
  • den cache ungültig, wenn Sie einen anderen parameter

Oder, Sie umschreiben den cache-Mechanismus, sich selbst - um einige dynamische Bindung.

Andere Tipps

Chaching wird anders behandelt durch die verschiedenen frameworks, so dass Sie würde haben, um uns zu helfen, mit ein paar mehr Informationen.Aber ich Frage mich auch, wenn Sie passieren konnten, die als parameter anstelle von $GLOBALS.

$this->renderSomeHTML(true);

Ihre Frage scheint unklar, aber Zwischenspeichern ziemlich viel bedeutet "gespeichert, so haben wir nicht zu berechnen, es wieder'.Wenn Sie möchten, dass der Inhalt zu unterscheiden, müssen Sie die cache weitere Ergebnisse und wählen Sie den richtigen zwischengespeicherten Objekt zurück zu senden.

Brauchen Sie mehr info zu geben, eine bessere Antwort.Was ist das Zwischenspeichern des Dokuments, Smarty?Und was meinst du mit "seine Lage auf der Seite"?Was ist 'es'?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top