Последняя часть цикла — чек-лист. Его стоит пройти до того, как на кэшируемом сайте появится новая функция: форма, счётчик, отзывы, личный блок, интеграция. Каждый вопрос — это ошибка, которую мы однажды сделали или нашли у себя.
Это 18-я, заключительная часть цикла «WordPress на кэшируемом сайте».
1. Что попадает в HTML
- Есть ли в разметке то, что отличается у разных посетителей? Имя, статус, голос, «вы подписаны» — первая часть.
- Есть ли то, что меняется чаще, чем сбрасывается кэш? Счётчики, комментарии, остатки — пятая и восьмая части.
- Есть ли токен с ограниченным сроком жизни?
wp_create_nonceв анонимной форме — девятая часть. - Решает ли разметка из кэша и сервер одно и то же по разным источникам? — 12-я часть.
2. Что меняет кэш
- Где хранится то, что видно на странице: запись, мета, опция, терм, своя таблица?
- Какой хук сбрасывает кэш при изменении каждого из этих мест? Нет хука — неделя устаревшего сайта — третья часть.
- Не сбрасывает ли кэш то, что на странице не видно: заявка, комментарий на модерации, служебная мета?
- Не пишет ли что-то в базу напрямую, мимо хуков?
3. Куки и заголовки
- Не ставит ли новая функция
Set-Cookieпри рендере страницы? Такой ответ nginx не кэширует. - Не добавляет ли она куку, которая попадает в обход кэша? Служебная кука комментатора — седьмая часть.
- Если ответ не должен кэшироваться — стоит ли
X-Accel-Expires: 0?nocache_headers()не поможет, если nginx игнорируетCache-Control— 14-я часть.
4. Отдельные запросы
- Уходит ли запрос после загрузки страницы, а не в окне первой отрисовки?
- Один ли это запрос на страницу, или по запросу на каждую карточку?
- Что видит человек, пока запрос идёт, и что — если запрос упал?
- Что отдаёт этот адрес анониму и что позволяет изменить? Проверено ли это запросом без кук? — 16-я часть.
5. Фоновые задачи
- Работает ли крон, когда страницы отдаются из кэша? Кто его запускает и от какого пользователя? — вторая часть.
- Что будет, если задача упадёт посередине: повторится ли она, не зациклится ли?
- Не будит ли крон ваш собственный проверочный скрипт?
6. Формы
- Записывается ли заявка в базу до отправки по каналам? — десятая часть.
- Может ли клиентская проверка запереть форму? Следующее нажатие обязано дойти до сервера — 11-я часть.
- Проверяется ли согласие на сервере и хранится ли его редакция? — 13-я часть.
7. Проверка глазами посетителя
- Открыть страницу анонимно, без кук, и посмотреть статус кэша — четвёртая часть.
- Сделать изменение в админке и проверить анонимно, что оно появилось.
- Открыть страницу дважды: второй ответ —
HIT, и функция по-прежнему работает.
Одна мысль на весь цикл
HTML один на всех. Личное и быстро меняющееся приходит отдельным запросом после загрузки. Всё, что видно всем, при изменении само сбрасывает кэш. Функция, которая укладывается в эти три фразы, кэшу не мешает — и кэш не мешает ей.
Как устроен и прогревается сам кэш — циклы «Кэш страниц без MISS» и «Кэш фрагментов и Redis». Как это всё сказывается на скорости в браузере — «PageSpeed без мифов».
Добавляете функцию на кэшируемый сайт?
Пришлите, что хотите сделать, — пройду этот чек-лист с вами до того, как оно сломает кэш или кэш сломает его.
// загружаю комментарии…