9
«Умное» кеширование Николай Зык (relo_san) [email protected]

Умное кеширование

Embed Size (px)

DESCRIPTION

Реализация механизма кеширования данных с автоматическим удалением кеша при изменении в источнике. Плагин доступен по адресу: http://github.com/relo-san/dinCachePlugin

Citation preview

Page 1: Умное кеширование

«Умное» кеширование

Николай Зык (relo_san)[email protected]

Page 2: Умное кеширование

Основные отличия:Обычное кеширование в Symfony:1.Создали кеш, указали время жизни2.Пользуемся, пока время не закончится или мы его явно не удалим

«Умное» кеширование:1.Создали кеш2.Пользуемся этим кешем, пока он автоматически не удалится при изменении в оригинальных данных.

Page 3: Умное кеширование

Как это работает?Система правил, аналогичная роутингу.Одно правило – одна выборка.К каждому правилу можно прилинковать одну или несколько моделей.Когда в объекте, принадлежащем прилинкованной модели, происходит изменение – посылается команда на удаление кеша, соответствующего этому правилу.

Page 4: Умное кеширование

Практическое описание одного из правил:

config/cache_routing.yml:routes: static_page: type: ‘custom’ get: model: ‘DinStaticPage’ method: ‘getPageQuery‘ path: ‘:_root/DinStaticPage/static_page’ key: ‘:category_id.:uri.:_i18n.cache’ remove: default: path: ‘:_root/DinStaticPage/static_page’ key: ‘:category_id.:uri.*.cache’

Page 5: Умное кеширование

Легенда:«static_page» - название правила«type» - тип данных:

• data – запрос одного объекта по id• page – страница со списком объектов• choices – список значений, для селекта• custom – произвольная выборка• prepared – подготовленные данные

Секция «get» описывает модель и метод, к которым будет осуществляться запрос.

Page 6: Умное кеширование

Легенда:Секция «remove» описывает правила, по которым при изменении (удалении, добавлении) объекта привязанной модели, будет осуществляться удаление кеша.

Ниже в этом же конфиге осуществляем привязку моделей к правилам:

config/cache_routing.yml:links: DinStaticPage: [‘static_page’] DinStaticCategory: [‘static_page’,***]

Page 7: Умное кеширование

Текущая реализация успешно работает, но ограничена работой только с файловым кешем.

В ближайшем будущем плагируется добавить возможность указания драйвера для определенного правила, работа с другими кеширующими механизмами (Memcached).

Также планируется добавить возможность работы с Propel и произвольными источниками данных.

Page 8: Умное кеширование

Реализация кеш-менеджера доступна в рамках опубликованного плагина, реализующего общие надстройки над фреймворком:svn://dinecat.com/dinSymfonyExtraPlugin

Плагин публикуется под лицензией MIT.

Я приглашаю всех, заинтересованных в разработке этого и других плагинов, к совместной работе в этом направлении.

Page 9: Умное кеширование

Доклад подготовил:Николай Зык (relo_san)

[email protected]

http://dinecat.com/http://relo-san.com/