zfconf 2012: Кеш без промахов средствами zend framework 2 (Евгений...
DESCRIPTION
http://www.zfconf.ru/2012/talks/caching-without-misses-with-zend-framework-2/TRANSCRIPT
Кеш без промахов средствами Zend Framework 2
Евгений Шпилевский, Никита Грибалев
Что такое кеширование
• Кеш – память с большей скоростью доступа
• Кеширование – сохранение данных в кэше с целью увеличения скорости доступа к ним
Что кешировать
• Часто запрашиваемые данные
• Данные, которые редко меняются
• Данные из медленных источников
Кешировать где?
Наиболее популярные хранилища:• Хранилища оперативной памяти
(Memcached, Zend Server Shared Memory, APC, etc)
• Нереляционные БД (Redis, MongoDB, etc)• Реляционные БД• Файловая система
Zend\Cache
• Простой интерфейс
• Много адаптеров
• Готовые решения
ZF 1
ZF 2
Это не работает
ZF2 (пока работает)
ZF2 DI
1 VS 2
• load• save• test• remove• clean• touch
• getItem• setItem• hasItem• removeItem• clear• 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/ZendSkeletonApplication
Настройка адаптера
Готовим контроллер
Загрузка модели
Кеширование модели
Очистка кеша
Кеширование статического блока
View Helper DI
View Helper
Кеширование страницы
Используйте nginx
=)
Вопросы?