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