Come potrei passare le variabili attraverso il contenuto memorizzato nella cache in PHP?

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

  •  01-07-2019
  •  | 
  •  

Domanda

Sostanzialmente ho una pagina PHP che richiama alcuni altri HTML per essere reso attraverso un metodo dell'oggetto.Assomiglia a questo:

LA MIA PAGINA PHP:

// some content...

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

// some content...

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

La prima chiamata al metodo viene memorizzato nella cache, ma ho bisogno di renderSomeHTML() per visualizzare leggermente diverso in base alla sua posizione nella pagina.Ho provato passando per $GLOBALS, ma il valore non cambia, quindi sto assumendo è sempre memorizzato nella cache.

Questo non è possibile senza il passaggio di un argomento attraverso il metodo o non la cache è?Ogni aiuto è apprezzato.Questa non è la mia applicazione, è Magento.

Edit:

Questo è Magento, e sembra essere l'utilizzo di memcached.Ho provato a passare un argomento attraverso renderSomeHTML(), ma quando uso func_get_args() in PHP include il rendering, quello che viene fuori non è quello che ho messo in esso.

Edit:

Più in basso la linea sono stato in grado di "invalidare" la cache chiamando un metodo diverso che ha lo stesso contenuto e passando a un argomento che spegne la memorizzazione nella cache.Grazie a tutti per il vostro aiuto.

È stato utile?

Soluzione

Ovviamente, non è possibile.Il punto di tutta la memorizzazione nella cache è che la 'cosa' è la cache non è intenzione di cambiare.Quindi è:

  • fornire un parametro
  • evitare la memorizzazione nella cache
  • invalidare la cache quando si imposta un parametro diverso

O, è possibile riscrivere il meccanismo di cache di te - supporto di alcuni binding dinamico.

Altri suggerimenti

Chaching viene gestito in modo diverso da diversi quadri, allora tu dovresti aiutare con qualche informazione in più.Ma mi chiedo anche se è possibile passare come parametro invece di utilizzare $GLOBALS.

$this->renderSomeHTML(true);

La tua domanda sembra poco chiaro, ma la cache praticamente significa 'memorizzati in modo non dobbiamo calcolare di nuovo'.Se si desidera che il contenuto diversi, è necessario cache altri risultati e scegliere il corretto l'oggetto memorizzato nella cache per inviare indietro.

Hai bisogno di maggiori informazioni per dare una risposta migliore.Che cosa è la cache del documento, Smarty?E che cosa si intende per "la sua posizione nella pagina"?Che cosa è 'e'?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top