Кеширование маленьких больших вещей

A presentation at WordPress Kitchen Meetup Summer 2015 in August 2015 in Kyiv, Ukraine, 02000 by Andrey Savchenko

Slide 1

Slide 1

Slide 2

Slide 2

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

Slide 3

Slide 3

Кеширование

Slide 4

Slide 4

Slide 5

Slide 5

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

Slide 6

Slide 6

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

Slide 7

Slide 7

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

Slide 8

Slide 8

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

Slide 9

Slide 9

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

Slide 10

Slide 10

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

Slide 11

Slide 11

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

Slide 12

Slide 12

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

Slide 13

Slide 13

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

Slide 14

Slide 14

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

Slide 15

Slide 15

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

Slide 16

Slide 16

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

Slide 17

Slide 17

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

Slide 18

Slide 18

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

Slide 19

Slide 19

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

Slide 20

Slide 20

Slide 21

Slide 21

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

Slide 22

Slide 22

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

Slide 23

Slide 23

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

Slide 24

Slide 24

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

Slide 25

Slide 25

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

Slide 26

Slide 26

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

Slide 27

Slide 27

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

Slide 28

Slide 28

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

Slide 29

Slide 29

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

Slide 30

Slide 30

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