27
Кэширование в web, php и symfony Морозов Александр

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

Embed Size (px)

Citation preview

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

Кэширование в web, php и symfonyМорозов Александр

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

План семинара● Клиентское кэширование

○ Cache-Control

○ Выбор правил Cache-Control

○ Управление HTTP кэшем в Symfony

○ Управление временем действия HTTP кэша в Symfony

○ Замечания по HTTP кэшированию

○ Валидация в Symfony при помощи ETag, Last-Modified

○ Отпитимизация валидации в Symfony

● Кэширование с использованием ESI (Edge Side Includes)

● Кэширование через обратный прокси Symfony

● Varnish, Symfony + Varnish

● PHP bytecode cache

● NGnix как кэширующий прокси

● Symfony + Redis, Doctrine Query and Results Caching

● Memcached

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

Типы кэшированияHTTP Caching (+Browser caching)

Proxy Caching

Reverse proxy

Server-side

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

Варианты кэширования в WEB

browser

browser cache

browser

browser cache

browser

browser cache

proxy cache

php app

reverse proxy cache

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

Клиентское кэшированиеКэш браузера:

Expires

Last-Modified

ETag

Cache-Control

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

Cache-Control:max-age=n - срок годности ответа, сек.

public - любой контент можно сохранять (перекрывается max-age)

private - контент разрешается сохранять только в браузере, запрещено промежуточное кэширование

no-cache - обязательная проверка изменений файла

no-store - полный запрет кэширования

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

Выбор правил Cache-Control

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

Управление HTTP кэшем в symfonyCache-Control:

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

Управление временем действия HTTP кэшачерез Cache-Control Header:

через Expires Header:

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

Другие методы управления HTTP кэшем в Symfony

Page 11: Кэширование в Web, php и 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

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

Валидация при помощи ETag

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

Валидация при помощи Last-Modified

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

Оптимизация валидации в Symfony

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

Кэширование через ESI

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

Кэширование через обратный проксиSymfony встроенный reverse proxy

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

Symfony + Varnishvarnish

web server

symfonyclient

cache hit

regular hit

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

Еще о клиентском кэшированиикэширование в local/session stoarage

File API

(FileSystem API, File Api, )

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

Кэширование Байт-кодаAlternative PHP Cache (APC)

eAccelerator

PhpExpress

XCache

Zend OPcache

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

Nginx как обратный кэширующий прокси

client

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

Redis (remote dictionary server)

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

Redis + Symfony

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

MemcachedLeaseWeb/LswMemcacheBundle

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

заголовки статичных страниц

заголовки меню категорий

заголовки меню производителей

сущности со слайдами из БД

последняя новость

последние поступления

рекомендованные товары

Page 25: Кэширование в Web, php и symfony
Page 26: Кэширование в Web, php и symfony
Page 27: Кэширование в Web, php и symfony