SlideShare a Scribd company logo
1 of 27
Кэширование в web, php и
symfony
Морозов Александр
План семинара
● Клиентское кэширование
○ Cache-Control
○ Выбор правил Cache-Control
○ Управление HTTP кэшем в Symfony
○ Управление временем действия HTTP кэша в Symfony
○ Замечания по HTTP кэшированию
○ Валидация в Symfony при помощи ETag, Last-Modified
○ Отпитимизация валидации в Symfony
● Кэширование с использованием ESI (Edge Side Includes)
● Кэширование через обратный прокси Symfony
Типы кэширования
HTTP Caching (+Browser caching)
Proxy Caching
Reverse proxy
Server-side
Варианты кэширования в WEB
browser
browser cache
browser
browser cache
browser
browser cache
proxy cache
php app
reverse proxy cache
Клиентское кэширование
Кэш браузера:
Expires
Last-Modified
ETag
Cache-Control
Cache-Control:
max-age=n - срок годности ответа, сек.
public - любой контент можно сохранять (перекрывается max-age)
private - контент разрешается сохранять только в браузере, запрещено
промежуточное кэширование
no-cache - обязательная проверка изменений файла
no-store - полный запрет кэширования
Выбор правил Cache-Control
Управление HTTP кэшем в symfony
Cache-Control:
Управление временем действия HTTP кэша
через Cache-Control Header:
через Expires Header:
Другие методы управления HTTP кэшем в
Symfony
Замечания по HTTP кэшированию
Используем кэширование с GET, HEAD
Не используем с PUT, POST, DELETE
не определены заголовки Cache-Control: no-cache
Cache-Control пустой Cache-Control: private,
must-revalidate
есть Cache-Control, не указано
public или private Cache-Control: private
Валидация при помощи ETag
Валидация при помощи Last-Modified
Оптимизация валидации в Symfony
Кэширование через ESI
Кэширование через обратный прокси
Symfony встроенный reverse proxy
Symfony + Varnish
varnish
web server
symfonyclient
cache hit
regular hit
Еще о клиентском кэшировании
кэширование в local/session stoarage
File API
(FileSystem API, File Api, )
Кэширование Байт-кода
Alternative PHP Cache (APC)
eAccelerator
PhpExpress
XCache
Zend OPcache
Nginx как обратный кэширующий прокси
client
Redis (remote dictionary server)
Redis + Symfony
Memcached
LeaseWeb/LswMemcacheBundle
заголовки
статичных
страниц
заголовки меню
категорий
заголовки меню
производителей
сущности со
слайдами из БД
последняя
новость
последние
поступления
рекомендованные
товары
Кэширование в Web, php и symfony
Кэширование в Web, php и symfony
Кэширование в Web, php и symfony

More Related Content

What's hot

Выступление Юрия Насретдинова, Badoo, на High Performance Conference
Выступление Юрия Насретдинова, Badoo, на High Performance ConferenceВыступление Юрия Насретдинова, Badoo, на High Performance Conference
Выступление Юрия Насретдинова, Badoo, на High Performance ConferenceEYevseyeva
 
Какой хостинг выбрать Hoster Савельев Антон
Какой хостинг выбрать Hoster Савельев АнтонКакой хостинг выбрать Hoster Савельев Антон
Какой хостинг выбрать Hoster Савельев АнтонГК ФИЛАНКО
 
Eugene Lisitsky Web Sockets
Eugene Lisitsky Web SocketsEugene Lisitsky Web Sockets
Eugene Lisitsky Web Socketsguest092df8
 
особенности использования Times Ten In Memory Database в высоконагруженной среде
особенности использования Times Ten In Memory Database в высоконагруженной средеособенности использования Times Ten In Memory Database в высоконагруженной среде
особенности использования Times Ten In Memory Database в высоконагруженной средеHighLoad2009
 
Chrome push notifications. Анатомия и разработка
Chrome push notifications. Анатомия и разработкаChrome push notifications. Анатомия и разработка
Chrome push notifications. Анатомия и разработкаAlexandr Mikhaylenko
 
Видеохостинг своими руками
Видеохостинг своими рукамиВидеохостинг своими руками
Видеохостинг своими рукамиStanislavMalkin
 
презентация по очередям
презентация по очередямпрезентация по очередям
презентация по очередямCyrill Abramov
 
Mafiozi Performance1
Mafiozi Performance1Mafiozi Performance1
Mafiozi Performance1barcamplv09
 
«Разработка и оптимизация высоконагруженного проекта»
«Разработка и оптимизация высоконагруженного проекта» «Разработка и оптимизация высоконагруженного проекта»
«Разработка и оптимизация высоконагруженного проекта» Гузель Рахимова
 
Кэширование в Веб разработке на серверном и клиентском уровнях
Кэширование в Веб разработке на серверном и клиентском уровняхКэширование в Веб разработке на серверном и клиентском уровнях
Кэширование в Веб разработке на серверном и клиентском уровняхForkConf
 
Подписание паспорта готовности электронной цифровой подписью в ЕКИС. Смирнова...
Подписание паспорта готовности электронной цифровой подписью в ЕКИС. Смирнова...Подписание паспорта готовности электронной цифровой подписью в ЕКИС. Смирнова...
Подписание паспорта готовности электронной цифровой подписью в ЕКИС. Смирнова...TCenter500
 
06 php instalation_ru
06 php instalation_ru06 php instalation_ru
06 php instalation_rumcroitor
 

What's hot (18)

Web sockets
Web socketsWeb sockets
Web sockets
 
Выступление Юрия Насретдинова, Badoo, на High Performance Conference
Выступление Юрия Насретдинова, Badoo, на High Performance ConferenceВыступление Юрия Насретдинова, Badoo, на High Performance Conference
Выступление Юрия Насретдинова, Badoo, на High Performance Conference
 
Какой хостинг выбрать Hoster Савельев Антон
Какой хостинг выбрать Hoster Савельев АнтонКакой хостинг выбрать Hoster Савельев Антон
Какой хостинг выбрать Hoster Савельев Антон
 
Eugene Lisitsky Web Sockets
Eugene Lisitsky Web SocketsEugene Lisitsky Web Sockets
Eugene Lisitsky Web Sockets
 
Hl Nekoval
Hl NekovalHl Nekoval
Hl Nekoval
 
HBase on Dev{Highload}
HBase on Dev{Highload}HBase on Dev{Highload}
HBase on Dev{Highload}
 
особенности использования Times Ten In Memory Database в высоконагруженной среде
особенности использования Times Ten In Memory Database в высоконагруженной средеособенности использования Times Ten In Memory Database в высоконагруженной среде
особенности использования Times Ten In Memory Database в высоконагруженной среде
 
Chrome push notifications. Анатомия и разработка
Chrome push notifications. Анатомия и разработкаChrome push notifications. Анатомия и разработка
Chrome push notifications. Анатомия и разработка
 
Myaso
MyasoMyaso
Myaso
 
Применяем Ansible
Применяем AnsibleПрименяем Ansible
Применяем Ansible
 
Видеохостинг своими руками
Видеохостинг своими рукамиВидеохостинг своими руками
Видеохостинг своими руками
 
презентация по очередям
презентация по очередямпрезентация по очередям
презентация по очередям
 
Mafiozi Performance1
Mafiozi Performance1Mafiozi Performance1
Mafiozi Performance1
 
«Разработка и оптимизация высоконагруженного проекта»
«Разработка и оптимизация высоконагруженного проекта» «Разработка и оптимизация высоконагруженного проекта»
«Разработка и оптимизация высоконагруженного проекта»
 
Кэширование в Веб разработке на серверном и клиентском уровнях
Кэширование в Веб разработке на серверном и клиентском уровняхКэширование в Веб разработке на серверном и клиентском уровнях
Кэширование в Веб разработке на серверном и клиентском уровнях
 
Подписание паспорта готовности электронной цифровой подписью в ЕКИС. Смирнова...
Подписание паспорта готовности электронной цифровой подписью в ЕКИС. Смирнова...Подписание паспорта готовности электронной цифровой подписью в ЕКИС. Смирнова...
Подписание паспорта готовности электронной цифровой подписью в ЕКИС. Смирнова...
 
Internet Explorer 8
Internet Explorer 8Internet Explorer 8
Internet Explorer 8
 
06 php instalation_ru
06 php instalation_ru06 php instalation_ru
06 php instalation_ru
 

Similar to Кэширование в Web, php и symfony

Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...Ontico
 
Максим Дунин, Nginx, Inc.
Максим Дунин, Nginx, Inc.Максим Дунин, Nginx, Inc.
Максим Дунин, Nginx, Inc.Ontico
 
Magento performance
Magento performanceMagento performance
Magento performanceaheadWorks
 
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox Extension
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox ExtensionОранжевый - новый синий: Как портировать Chrome Extension в Firefox Extension
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox Extensionchaykaborya
 
Cпецкурс 2014, занятие 7. Web-приложения
Cпецкурс 2014, занятие 7. Web-приложенияCпецкурс 2014, занятие 7. Web-приложения
Cпецкурс 2014, занятие 7. Web-приложения7bits
 
Вячеслав Бирюков - HTTP и HTTPS
Вячеслав Бирюков - HTTP и HTTPSВячеслав Бирюков - HTTP и HTTPS
Вячеслав Бирюков - HTTP и HTTPSYandex
 
Кэширование данных в web приложениях. Использование memcached / Юрий Красноще...
Кэширование данных в web приложениях. Использование memcached / Юрий Красноще...Кэширование данных в web приложениях. Использование memcached / Юрий Красноще...
Кэширование данных в web приложениях. Использование memcached / Юрий Красноще...Ontico
 
Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Т...
Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Т...Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Т...
Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Т...Yandex
 
Опыт построения комплексного катастрофоустойчивого решения NetApp и фрагмента...
Опыт построения комплексного катастрофоустойчивого решения NetApp и фрагмента...Опыт построения комплексного катастрофоустойчивого решения NetApp и фрагмента...
Опыт построения комплексного катастрофоустойчивого решения NetApp и фрагмента...Айдар Гилязов
 
Александр Тоболь, "Одноклассники"
Александр Тоболь, "Одноклассники"Александр Тоболь, "Одноклассники"
Александр Тоболь, "Одноклассники"Ontico
 
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...ForkConf
 
Платформа для видео сроком в квартал. Александр Тоболь.
Платформа для видео сроком в квартал. Александр Тоболь.Платформа для видео сроком в квартал. Александр Тоболь.
Платформа для видео сроком в квартал. Александр Тоболь.odnoklassniki.ru
 
Кадры решают все, или стриминг видео, Александр Тоболь (Одноклассники)
Кадры решают все, или стриминг видео, Александр Тоболь (Одноклассники)Кадры решают все, или стриминг видео, Александр Тоболь (Одноклассники)
Кадры решают все, или стриминг видео, Александр Тоболь (Одноклассники)Ontico
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ontico
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Anton Baranov
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Ontico
 

Similar to Кэширование в Web, php и symfony (19)

Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...
 
Максим Дунин, Nginx, Inc.
Максим Дунин, Nginx, Inc.Максим Дунин, Nginx, Inc.
Максим Дунин, Nginx, Inc.
 
Magento performance
Magento performanceMagento performance
Magento performance
 
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox Extension
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox ExtensionОранжевый - новый синий: Как портировать Chrome Extension в Firefox Extension
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox Extension
 
Cпецкурс 2014, занятие 7. Web-приложения
Cпецкурс 2014, занятие 7. Web-приложенияCпецкурс 2014, занятие 7. Web-приложения
Cпецкурс 2014, занятие 7. Web-приложения
 
Вячеслав Бирюков - HTTP и HTTPS
Вячеслав Бирюков - HTTP и HTTPSВячеслав Бирюков - HTTP и HTTPS
Вячеслав Бирюков - HTTP и HTTPS
 
Framework Battle: Django vs Flask vs Chalice
Framework Battle: Django vs Flask vs ChaliceFramework Battle: Django vs Flask vs Chalice
Framework Battle: Django vs Flask vs Chalice
 
Кэширование данных в web приложениях. Использование memcached / Юрий Красноще...
Кэширование данных в web приложениях. Использование memcached / Юрий Красноще...Кэширование данных в web приложениях. Использование memcached / Юрий Красноще...
Кэширование данных в web приложениях. Использование memcached / Юрий Красноще...
 
Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Т...
Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Т...Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Т...
Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Т...
 
Опыт построения комплексного катастрофоустойчивого решения NetApp и фрагмента...
Опыт построения комплексного катастрофоустойчивого решения NetApp и фрагмента...Опыт построения комплексного катастрофоустойчивого решения NetApp и фрагмента...
Опыт построения комплексного катастрофоустойчивого решения NetApp и фрагмента...
 
Александр Тоболь, "Одноклассники"
Александр Тоболь, "Одноклассники"Александр Тоболь, "Одноклассники"
Александр Тоболь, "Одноклассники"
 
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
 
Платформа для видео сроком в квартал. Александр Тоболь.
Платформа для видео сроком в квартал. Александр Тоболь.Платформа для видео сроком в квартал. Александр Тоболь.
Платформа для видео сроком в квартал. Александр Тоболь.
 
WWW
WWWWWW
WWW
 
Кадры решают все, или стриминг видео, Александр Тоболь (Одноклассники)
Кадры решают все, или стриминг видео, Александр Тоболь (Одноклассники)Кадры решают все, или стриминг видео, Александр Тоболь (Одноклассники)
Кадры решают все, или стриминг видео, Александр Тоболь (Одноклассники)
 
Eternal static (RIT 2011)
Eternal static (RIT 2011)Eternal static (RIT 2011)
Eternal static (RIT 2011)
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 

Кэширование в Web, php и symfony

Editor's Notes

  1. Кэширование можно разделить на 4 основных группы: HTTP кэширование, как правило через заголовки, сюда же стоит отнести всевозможные методы кэшитрования в браузере Proxy кэширование, Прокси обслуживают сотни или тысячи пользователей; большие корпорации и интернет-провайдеры часто настраивают их на своих файрволах или используют как отдельные устройства. Прокси-кэши являются своего рода общей кэш-памятью (shared cache): вместо обслуживания одного человека, они работают с большим числом пользователей и поэтому очень хороши в сокращении времени ожидания и сетевого трафика. В основном, из-за того, что популярный контент запрашивается много раз. Reverse proxy — тип прокси-сервера, который ретранслирует запросы клиентов из внешней сети на один или несколько серверов, логически расположенных во внутренней сети. При этом для клиента это выглядит так, будто запрашиваемые ресурсы находятся непосредственно там. Реверс прокси умеют кэшировать данные, обрабатывать http-заголовки, распределять нагрузку между различными серверами. Для кэширования даных непосредственно на сервере используется множество различных технологий и библиотек, например Redis, RabbitMQ, Memcached и других.