Следуя потоку MarkR (не вижу, как на него ответить), предполагая, что вы просто пытаетесь передать данные в JS:
Один из способов получить лучшее из обоих миров — включить некоторую логику в этот бит PHP, чтобы он проверял определенный файл cookie и имел определенное значение (например, версию/время). Нравиться:
if (!isset($_COOKIE['warm']) && $_COOKIE['warm'] !== 'today') {
echo '<script type=\'text/javascript\'>';
echo "var foo = $bar;";
echo '</script>';
}
Клиентская сторона сначала будет искать foo global, и если он существует, он возьмет его и закэширует (например, localStorage) и установит cookie со временем, версией или каким-либо свойством из объекта foo. Если бы foo не было, он проверял бы кеш (например, localStorage). Если бы его там не было, то он сделал бы для него AJAX-вызов.
Таким образом, вы сэкономите дополнительный запрос на посетителя, пропустившего или впервые зашедшего кеш, и получите преимущество кэширования при его повторении. Не стоит сходить с ума от этого, но я думаю, что это должно подойти для небольших важных объектов данных (начальная загрузка, профиль пользователя, информация о приборной панели и т. д.).
(редактировать) Чтобы было ясно, главная идея сделать этот подход легко достижимым и удобным для сопровождения состоит в том, чтобы хранить код на стороне сервера, который генерирует $bar для JS, в одном месте, которое можно вызывать как когда PHP печатает var foo, так и при создании JSON-ответ. Точно так же клиентская сторона будет использовать одну функцию для анализа $bar, независимо от того, получена ли она из var, кэша или AJAX.
person
Jasmine Hegman
schedule
21.09.2012
foo
должно быть.foo
или#foo
:) - person Sampson   schedule 22.02.2010foo
, но я сомневаюсь, что это то, что имел в виду пользователь :) - person Sampson   schedule 22.02.2010