Андрей “Rarst” Савченко
Кеширование
- 2.0с медиана
- 4.3с среднее
Apdex
удовлетворенно + терпимо / 2
всего
- 77% удовлетворенно ( <4с )
- 19% терпимо ( <16с )
- 4% разочарованно ( >16с )
$ € £
Потенциальная ценность визита?
( спросите вслух — удивитесь )
¥ ₽ ₴
Подводные камни кеширования страниц
- повторное использование частей
- нагрузка на ресурсы
- холодный кеш
- rewrite
Edge Side Includes ( ESI )
<esi:include src="http://example.com/1.html" />
- динамическая сборка веб контента
- повторное использование частей
w3.org/TR/esi-lang
Кеширование фрагментов
- независимое кеширование частей
- высокое повторное использование
- асинхронное обновление
Подводные камни кеша фрагментов
- анонимизация
- инвалидация
- контекст
- блокировка
Fragment Cache
- оборачивает TLC Transients
- “фреймворк” плагин
- конкретные обработчики
/Rarst/fragment-cache
Обязанности плагина
- запуск сервера обновлений
- регистрация обработчиков
Обязанности обработчика
- расширение базового класса
- перехват данных для сохранения
- callback, аргументы, и соль
часть |
время |
меню |
9% |
сайдбар |
39% |
галерея |
47% |
содержимое |
5% |
Обработчик галерей
- перехватывает
[gallery]
- инвалидация по:
- аргументам
- времени изменения поста
- вложениям поста
часть |
время |
меню |
16% |
сайдбар |
72% |
галерея |
2% |
содержимое |
9% |
Обработчик виджетов
- подключается к:
widget_display_callback
widget_update_callback
- инвалидация по экземпляру виджета
часть |
время |
меню |
59% |
сайдбар |
4% |
галерея |
4% |
содержимое |
33% |
Обработчик меню
pre_wp_nav_menu
— начиная с ядра 3.9!
- эпичный грязный хак до того:
add_filter( 'wp_get_nav_menus', '__return_empty_array' );
- инвалидация по редактированию меню
часть |
время |
меню |
9% |
сайдбар |
9% |
галерея |
9% |
содержимое |
73% |
Но насколько быстрее в итоге?
часть |
улучшение |
меню |
×19 |
сайдбар |
×80 |
галерея |
×97 |
всего с содержимым |
×19 |
Никогда не “просто включайте” кеш
- Имплементация
- Мониторинг
- Профит