Come potrei passare le variabili attraverso il contenuto memorizzato nella cache in PHP?
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.
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'?