Как я могу передать переменные в кэшированный контент в PHP? - PullRequest
0 голосов
/ 18 сентября 2008

По сути, у меня есть страница PHP, которая вызывает какой-то другой HTML, который будет отображаться с помощью метода объекта. Это выглядит так:

МОЯ СТРАНИЦА PHP:

// some content...

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

// some content...

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

Первый вызов метода кэшируется, но мне нужно, чтобы renderSomeHTML () отображал немного по-разному в зависимости от его расположения на странице. Я попытался перейти к $ GLOBALS, но значение не изменилось, поэтому я предполагаю, что оно кэшируется.

Разве это невозможно без передачи аргумента через метод или без его кэширования? Любая помощь приветствуется. Это не мое приложение - это Magento.

Edit:

Это Magento, и похоже, что он использует memcached. Я пытался передать аргумент через renderSomeHTML (), но когда я использую func_get_args () в PHP include для визуализации, получается не то, что я в него вкладываю.

Edit:

Далее я смог «аннулировать» кэш, вызвав другой метод, который извлекал то же содержимое, и передав аргумент, который отключил кеширование. Спасибо всем за помощь.

Ответы [ 3 ]

3 голосов
/ 18 сентября 2008

Очевидно, вы не можете. Весь смысл кэширования в том, что «вещь», которую вы кэшируете, не изменится. Так что вы либо:

  • укажите параметр
  • aviod кеширование
  • делает недействительным кеш при установке другого параметра

Или вы сами переписываете механизм кэширования - для поддержки некоторого динамического связывания.

1 голос
/ 18 сентября 2008

Chaching по-разному обрабатывается различными структурами, поэтому вам придется помочь нам с дополнительной информацией. Но мне также интересно, если бы вы могли передать это как параметр вместо использования $GLOBALS.

$this->renderSomeHTML(true);
0 голосов
/ 18 сентября 2008

Ваш вопрос кажется неясным, но кэширование в значительной степени означает «сохранено, поэтому нам не нужно вычислять его снова». Если вы хотите, чтобы содержимое отличалось, вам нужно кэшировать больше результатов и выбрать правильный объект из кэша для отправки обратно.

Нужно больше информации, чтобы дать лучший ответ. Что кеширует документ, Smarty? А что вы подразумеваете под "своим местоположением на странице"? Что такое "это"?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...