2. План семинара
● Клиентское кэширование
○ Cache-Control
○ Выбор правил Cache-Control
○ Управление HTTP кэшем в Symfony
○ Управление временем действия HTTP кэша в Symfony
○ Замечания по HTTP кэшированию
○ Валидация в Symfony при помощи ETag, Last-Modified
○ Отпитимизация валидации в Symfony
● Кэширование с использованием ESI (Edge Side Includes)
● Кэширование через обратный прокси Symfony
6. Cache-Control:
max-age=n - срок годности ответа, сек.
public - любой контент можно сохранять (перекрывается max-age)
private - контент разрешается сохранять только в браузере, запрещено
промежуточное кэширование
no-cache - обязательная проверка изменений файла
no-store - полный запрет кэширования
11. Замечания по HTTP кэшированию
Используем кэширование с GET, HEAD
Не используем с PUT, POST, DELETE
не определены заголовки Cache-Control: no-cache
Cache-Control пустой Cache-Control: private,
must-revalidate
есть Cache-Control, не указано
public или private Cache-Control: private
Кэширование можно разделить на 4 основных группы:
HTTP кэширование, как правило через заголовки, сюда же стоит отнести всевозможные методы кэшитрования в браузере
Proxy кэширование, Прокси обслуживают сотни или тысячи пользователей; большие корпорации и интернет-провайдеры часто настраивают их на своих файрволах или используют как отдельные устройства. Прокси-кэши являются своего рода общей кэш-памятью (shared cache): вместо обслуживания одного человека, они работают с большим числом пользователей и поэтому очень хороши в сокращении времени ожидания и сетевого трафика. В основном, из-за того, что популярный контент запрашивается много раз.
Reverse proxy — тип прокси-сервера, который ретранслирует запросы клиентов из внешней сети на один или несколько серверов, логически расположенных во внутренней сети. При этом для клиента это выглядит так, будто запрашиваемые ресурсы находятся непосредственно там. Реверс прокси умеют кэшировать данные, обрабатывать http-заголовки, распределять нагрузку между различными серверами.
Для кэширования даных непосредственно на сервере используется множество различных технологий и библиотек, например Redis, RabbitMQ, Memcached и других.