Pergunta

Essencialmente eu tenho uma página PHP que as chamadas fora algum outro HTML a ser prestado através do método de um objeto. Parece que este:

MY PHP página:

// some content...

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

// some content...

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

A primeira chamada de método está em cache, mas eu preciso renderSomeHTML () para exibir um pouco diferente com base em sua localização na página. Eu tentei passando por US $ GLOBALS, mas o valor não muda, então eu estou supondo que ele está ficando em cache.

Isto não é possível sem passar um argumento através do método ou por não cache-lo? Qualquer ajuda é apreciada. Esta não é a minha aplicação -. É Magento

Editar:

Esta é Magento, e parece estar usando memcached. Tentei passar um argumento através renderSomeHTML (), mas quando eu uso func_get_args () no PHP incluem a serem prestados, o que sai não é o que eu colocar nele.

Editar:

Mais abaixo da linha que eu era capaz de "invalidar" o cache chamando um método diferente que puxou o mesmo conteúdo e passando em um argumento que desligado cache. Obrigado a todos por sua ajuda.

Foi útil?

Solução

Obviamente, você não pode. O ponto inteiro de cache é que a 'coisa' que você cache não vai mudar. Então você quer:

  • fornecer um parâmetro
  • Aviod cache
  • invalidar o cache quando você definir um parâmetro diferente

Ou, você reescrever o mecanismo de cache si mesmo -. Para apoiar alguns ligação dinâmica

Outras dicas

Chaching é tratada de forma diferente por enquadramentos diferentes, por isso você tem que nos ajudar com mais alguma informação. Mas eu também quero saber se você podia passar por aquele como um parâmetro em vez de usar $GLOBALS.

$this->renderSomeHTML(true);

A sua questão parece clara, mas o cache praticamente significa 'armazenados de modo que não tem que calcular isso de novo'. Se você deseja que o conteúdo diferem, você precisa armazenar mais resultados e pegar o objeto em cache correta um para enviar de volta.

Precisa de mais informações para dar uma resposta melhor. O que é o cache do documento, Smarty? E o que você quer dizer com "a sua localização na página"? O que é 'ele'?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top