2 Андрей “Rarst” Савченко • Rarst.net ♦ WPSE ( s.tk/wp ) • QueryPosts.com • Composer.Rarst.net • Команда Yoast.com

Кеширование

5 Время загрузки Rarst.net • 2.0с медиана • 4.3с среднее

Apdex удовлетворенно + терпимо / 2 всего

7 Rarst.net apdex — 0.87 • 77% удовлетворенно ( <4с ) • 19% терпимо ( <16с ) • 4% разочарованно ( >16с )

$€£ Потенциальная ценность визита? ( спросите вслух — удивитесь ) ¥₽₴

9 Подводные камни кеширования страниц • повторное использование частей • нагрузка на ресурсы • холодный кеш • rewrite

10 HTTP кеш 304 Not Modified • доставка по необходимости • для браузеров & прокси серверов symfony.com/doc/current/book/http_cache.html

11 Edge Side Includes ( ESI ) <esi:include src="http://example.com/1.html" /> • динамическая сборка веб контента • повторное использование частей w3.org/TR/esi-lang

12 Кеширование фрагментов • независимое кеширование частей • высокое повторное использование + асинхронное обновление

13 Подводные камни кеша фрагментов • анонимизация • инвалидация • контекст • блокировка

14 Transients API • хранилище • постоянность • поддержка объектного кеша codex.wordpress.org/Transients_API

15 TLC Transients • оборачивает Transients API • асинхронное обновление • безопасная блокировка /markjaquith/WP-TLC-Transients

16 Fragment Cache • оборачивает TLC Transients • “фреймворк” плагин • конкретные обработчики /Rarst/fragment-cache

17 Обязанности плагина • запуск сервера обновлений • регистрация обработчиков

18 Обязанности обработчика • расширение базового класса • перехват данных для сохранения • callback, аргументы, и соль

Магия медленная

21 часть время меню 9% сайдбар 39% галерея 47% содержимое 5%

22 Обработчик галерей • перехватывает [gallery] • инвалидация по: • аргументам • времени изменения поста • вложениям поста

23 часть время меню 16% сайдбар 72% галерея 2% содержимое 9%

24 Обработчик виджетов • подключается к: • widget_display_callback • widget_update_callback • инвалидация по экземпляру виджета

25 часть время меню 59% сайдбар 4% галерея 4% содержимое 33%

26 Обработчик меню • pre_wp_nav_menu — начиная с ядра 3.9! • эпичный грязный хак до того: add_filter( 'wp_get_nav_menus', '__return_empty_array' ); • инвалидация по редактированию меню

27 часть время меню 9% сайдбар 9% галерея 9% содержимое 73%

28 Но насколько быстрее в итоге? часть улучшение меню ×19 сайдбар ×80 галерея ×97 всего с содержимым ×19

29 Никогда не “просто включайте” кеш 1. Имплементация 2. Мониторинг 3. Профит

30 Спасибо, что выслушали! Вопросы? • @Rarst • The Loop ( s.tk/chat ) Rarst.net/slides/caching-ru