Your SlideShare is downloading. ×
Умное кеширование
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

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

1,130
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,130
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

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