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

1,298 views

Published on

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

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,298
On SlideShare
0
From Embeds
0
Number of Embeds
360
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. «Умное» кеширование Николай Зык ( relo_san ) [email_address]
  2. 2. Основные отличия: <ul><li>Обычное кеширование в Symfony: </li></ul><ul><li>Создали кеш, указали время жизни </li></ul><ul><li>Пользуемся, пока время не закончится или мы его явно не удалим </li></ul><ul><li>«Умное» кеширование: </li></ul><ul><li>Создали кеш </li></ul><ul><li>Пользуемся этим кешем, пока он автоматически не удалится при изменении в оригинальных данных. </li></ul>
  3. 3. Как это работает? Система правил, аналогичная роутингу. Одно правило – одна выборка. К каждому правилу можно прилинковать одну или несколько моделей. Когда в объекте, принадлежащем прилинкованной модели, происходит изменение – посылается команда на удаление кеша, соответствующего этому правилу.
  4. 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’
  5. 5. Легенда: « static_page » - название правила « type » - тип данных: • data – запрос одного объекта по id • page – страница со списком объектов • choices – список значений, для селекта • custom – произвольная выборка • prepared – подготовленные данные Секция « get » описывает модель и метод, к которым будет осуществляться запрос.
  6. 6. Легенда: Секция « remove » описывает правила, по которым при изменении (удалении, добавлении) объекта привязанной модели, будет осуществляться удаление кеша. Ниже в этом же конфиге осуществляем привязку моделей к правилам: config/cache_routing.yml: links: DinStaticPage: [ ‘static_page’ ] DinStaticCategory: [ ‘static_page’ ,***]
  7. 7. Текущая реализация успешно работает, но ограничена работой только с файловым кешем. В ближайшем будущем плагируется добавить возможность указания драйвера для определенного правила, работа с другими кеширующими механизмами ( Memcached ) . Также планируется добавить возможность работы с Propel и произвольными источниками данных.
  8. 8. Реализация кеш-менеджера доступна в рамках опубликованного плагина, реализующего общие надстройки над фреймворком: svn://dinecat.com/dinSymfonyExtraPlugin Плагин публикуется под лицензией MIT . Я приглашаю всех, заинтересованных в разработке этого и других плагинов, к совместной работе в этом направлении.
  9. 9. Доклад подготовил: Николай Зык ( relo_san ) [email_address] http://dinecat.com/ http://relo-san.com/

×