zfconf 2012: Кеш без промахов средствами zend framework 2 (Евгений...

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

Upload: zfconf-conference

Post on 16-Jun-2015

2.916 views

Category:

Technology


0 download

DESCRIPTION

http://www.zfconf.ru/2012/talks/caching-without-misses-with-zend-framework-2/

TRANSCRIPT

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

Кеш без промахов средствами Zend Framework 2

Евгений Шпилевский, Никита Грибалев

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

Что такое кеширование

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

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

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

Что кешировать

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

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

• Данные из медленных источников

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

Кешировать где?

Наиболее популярные хранилища:• Хранилища оперативной памяти

(Memcached, Zend Server Shared Memory, APC, etc)

• Нереляционные БД (Redis, MongoDB, etc)• Реляционные БД• Файловая система

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

Zend\Cache

• Простой интерфейс

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

• Готовые решения

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

ZF 1

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

ZF 2

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

Это не работает

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

ZF2 (пока работает)

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

ZF2 DI

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

1 VS 2

• load• save• test• remove• clean• touch

• getItem• setItem• hasItem• removeItem• clear• touchItem

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

А также

• replaceItem

• checkAndSet

• incrementItem

• decrementItem

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

Работа с массивами

• getItems

• setItems

• addItems

• hasItems

• replaceItems

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

Скучно

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

non-blocking

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

Пространства имен

Поддерживает адаптер

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

Очистка по неймспейсу (не для всех)

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

Плагины

• Перехват исключений

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

• Очистка

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

• ignore_user_abort

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

Конечно вы можете написать свой плагин

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

Паттерны

Фронтэндов больше нет

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

Стало лучше?

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

Инициализация

С помощью фабрики

С помощью силы рук

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

CallbackCache Кеширование результатов коллбека

Почти всегда

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

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

ObjectCache

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

• Проксирует вызовы методов, сохраняет результат в кеш

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

Попробуем?

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

Попробуем закешировать какой-нибудь реальный объект

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

Тест №2

Запустим тест дважды с небольшим промежутком

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

Внедряем кеширование

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

Quick start

• Возьмем ZendSkeletonApplication за основу

• https://github.com/zendframework/ZendSkeletonApplication

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

Настройка адаптера

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

Готовим контроллер

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

Загрузка модели

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

Кеширование модели

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

Очистка кеша

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

Кеширование статического блока

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

View Helper DI

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

View Helper

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

Кеширование страницы

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

Используйте nginx

=)

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

Вопросы?