Как стать автором
Обновить

Symfony

Время на прочтение3 мин
Количество просмотров2.1K
Автор оригинала: Symfony
Очень нравится этот framework.
Буду переводить часть информации по мере её прочтения. Думаю, что это будет полезно не мне одному. В свою очередь предлагаю обсуждать и дополнять всем, кому эта тема и framework не безразличен

Chapter 12 — Caching


Одним из путей ускорения работы web-based приложения является запоминание части или всего HTML документа, для повторной его выдачи при следующих запросах. Эта технология известна как кэширование. Может применяться как на серверной части, так и на клиентской.

Symfony предлагает гибкую систему кэширования на стороне сервера. Позволяет сохранять полные ответы сервера, результат каких-либо действий, или фрагмент шаблона в файл, описанный в соответствии с YAML форматом (http://www.yaml.org/). Когда данные обновятся, Вы можете очистить часть кэша через командную строку или специальные методы (прим. я предполагаю здесь речь о существующих в ramework'е специально зарезервированных для этих целей методах ). Также Symfony предлагает легкий путь кэширования на стороне клиента средствами HTTP 1.1. (http://www.w3.org/Protocols/)Эта глава раскроет возможности кэширования, упомянутых выше, предоставит подсказки для практического применения в Ваших приложениях.

Кэширование ответа

Принцип HTML кэширования простой: часть или весь HTML код, что отправляется в ответе пользователю на его запрос может быть использован многократно при аналогичных запросах. HTML код для этой цели хранится в специальном месте (папка cache/). Перед обработкой запроса от клиента к серверу, контроллер в первую очередь пытается просмотреть именно эту папку на предмет наличия данных. Если кэшированные данные найдены, то они будут отправлены без выполнения дополнительных действий со стороны сервера ( прим. статика ), таким образом существенно снизив загрузку процессорного времени сервера. Но если данные не найдены, то сработает обработчик вызванного события, сформирует данные для ответа и запишет их в папку cache/. В будущем вся операция повторяется.

По умолчанию кэш выключен. Для его применения нужно иметь права администратора сайта.(?)

Symfony поддерживает три типа кэширования:
1. Кэш событий
2. Частичный кэш компонентов
3. Кэш шаблонных фрагментов

Первые два типа кэширования управляются с помощью YAML файлов. Кэширование шаблонных фрагментов управляется вспомогательными(?) функциями шаблона.

Глобальные настройки кэша

Для каждого приложения в проекте (в контексте Symfony), механизм HTML кэширования может быть применен или нет (по умолчанию кэш отключен ) определив указания в окружении settings.yml

Вот пример демонстрирующий активацию механизма кэширования:
frontend/config/settings.yml
dev:
[табуляция].settings:
[табуляция][табуляция]cache:[табуляция][табуляция][табуляция][табуляция]on


[прим. изучайте синтаксис YAML]

Кэширование событий

События, отображающие статическую информацию( исключаем динамически формируемые данные из БД и зависимости от сессий ) или действия чтения неменяющейся информации из БД (обычно GET запросы) идеальны для кэширования. В наглядном виде (изображение 12-1 ) показано какие элементы страницы кэшируются в зависимости от случая: результат действия ( это шаблон ) или действие результата вместе с форматом.

Изображения 12-1 — Кэширование событий
Кэширование событий

Для примера рассмотрим user/list событие, которое возвращает всех пользователей сайта. Если с данными о пользователях не происходили изменения модификации, удаления или добавления (), а также эта информация часто выводится на сайте, то это тот случай, когда стоит задуматься о кэшировании.

Включение и настройка кэша для событий определяется в cache.yml, который располагается в директории модуля config/ Смотрите для примера листинг 12-2

Листинг 12-2
list:
[табуляция]enabled:[табуляция]on
[табуляция]with_layout:[табуляция]false[табуляция]# Default value
[табуляция]lifetime:[табуляция]86400[табуляция]# Default value


продолжение следует…
Теги:
Хабы:
+6
Комментарии8

Публикации

Истории

Работа

PHP программист
159 вакансий

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн