Кеш без промахов средствами
     Zend Framework 2
      Евгений Шпилевский,
        Никита Грибалев
Что такое кеширование

• Кеш – память с большей скоростью доступа

• Кеширование – сохранение данных в кэше с
  целью увеличения скорости доступа к ним
Что кешировать

• Часто запрашиваемые данные

• Данные, которые редко меняются

• Данные из медленных источников
Кешировать где?
Наиболее популярные хранилища:
• Хранилища оперативной памяти
  (Memcached, Zend Server Shared Memory,
  APC, etc)
• Нереляционные БД (Redis, MongoDB, etc)
• Реляционные БД
• Файловая система
ZendCache
• Простой интерфейс

• Много адаптеров

• Готовые решения
ZF 1
ZF 2
Это не работает
ZF2 (пока работает)
ZF2 DI
1 VS 2
•   load        •   getItem
•   save        •   setItem
•   test        •   hasItem
•   remove      •   removeItem
•   clean       •   clear
•   touch       •   touchItem
А также

•   replaceItem

•   checkAndSet

•   incrementItem

•   decrementItem
Работа с массивами
•   getItems

•   setItems

•   addItems

•   hasItems

•   replaceItems
Скучно
non-blocking
Пространства имен
   Поддерживает адаптер

   Поддерживают все методы

   Очистка по неймспейсу (не для всех)
Плагины
• Перехват исключений

• Оптимизация хранилища

• Очистка

• Кастомная сериализация (JSON)

• ignore_user_abort
Конечно вы можете
написать свой плагин
Паттерны
   Фронтэндов больше нет

   Замена им – паттерны

   Стало лучше?
Инициализация
С помощью фабрики




С помощью силы рук
CallbackCache
Кеширование результатов коллбека


Удобное использование


Почти всегда
ObjectCache
• Надстройка над CallbackCache для
  удобной работы с объектами


• Проксирует вызовы методов, сохраняет
  результат в кеш
Попробуем?
Попробуем закешировать
какой-нибудь реальный объект
Тест №2
Запустим тест дважды с небольшим промежутком
Внедряем кеширование
Quick start
• Возьмем ZendSkeletonApplication за
  основу


• https://github.com/zendframework/ZendSkele
  tonApplication
Настройка адаптера
Готовим контроллер
Загрузка модели
Кеширование модели
Очистка кеша
Кеширование статического
         блока
View Helper DI
View Helper
Кеширование страницы
Используйте nginx

       =)
Вопросы?

ZFConf 2012: Кеш без промахов средствами Zend Framework 2 (Евгений Шпилевский)