Pregunta

Básicamente, tengo una página PHP que llama a otro HTML para representarlo a través del método de un objeto.Se parece a esto:

MI PÁGINA PHP:

// some content...

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

// some content...

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

La primera llamada al método se almacena en caché, pero necesito que renderSomeHTML() se muestre ligeramente diferente según su ubicación en la página.Intenté pasar a $GLOBALS, pero el valor no cambia, así que supongo que se está almacenando en caché.

¿No es esto posible sin pasar un argumento a través del método o sin almacenarlo en caché?Se agradece cualquier ayuda.Esta no es mi aplicación, es Magento.

Editar:

Este es Magento y parece estar usando Memcached.Intenté pasar un argumento a través de renderSomeHTML(), pero cuando uso func_get_args() en el PHP include para ser renderizado, lo que sale no es lo que puse en él.

Editar:

Más adelante pude "invalidar" el caché llamando a un método diferente que extraía el mismo contenido y pasando un argumento que desactivaba el almacenamiento en caché.Gracias a todos por su ayuda.

¿Fue útil?

Solución

Obviamente no puedes.El objetivo del almacenamiento en caché es que la "cosa" que almacena en caché no va a cambiar.Entonces tú:

  • proporcionar un parámetro
  • evitar el almacenamiento en caché
  • invalidar el caché cuando estableces un parámetro diferente

O puede reescribir el mecanismo de caché usted mismo para admitir algún enlace dinámico.

Otros consejos

El almacenamiento en caché se maneja de manera diferente según los distintos marcos, por lo que tendrías que ayudarnos con más información.Pero también me pregunto si podrías pasarlo como parámetro en lugar de usar $GLOBALS.

$this->renderSomeHTML(true);

Su pregunta no parece clara, pero el almacenamiento en caché significa prácticamente "almacenado para que no tengamos que calcularlo nuevamente".Si desea que el contenido sea diferente, debe almacenar en caché más resultados y elegir el objeto almacenado en caché correcto para enviarlo de vuelta.

Necesita más información para dar una mejor respuesta.¿Qué es almacenar en caché el documento, Smarty?¿Y qué quieres decir con "su ubicación en la página"?Qué es'?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top