Последняя часть цикла — чек-лист. Его стоит пройти до того, как на кэшируемом сайте появится новая функция: форма, счётчик, отзывы, личный блок, интеграция. Каждый вопрос — это ошибка, которую мы однажды сделали или нашли у себя.

Это 18-я, заключительная часть цикла «WordPress на кэшируемом сайте».

1. Что попадает в HTML

  1. Есть ли в разметке то, что отличается у разных посетителей? Имя, статус, голос, «вы подписаны» — первая часть.
  2. Есть ли то, что меняется чаще, чем сбрасывается кэш? Счётчики, комментарии, остатки — пятая и восьмая части.
  3. Есть ли токен с ограниченным сроком жизни? wp_create_nonce в анонимной форме — девятая часть.
  4. Решает ли разметка из кэша и сервер одно и то же по разным источникам? — 12-я часть.

2. Что меняет кэш

  1. Где хранится то, что видно на странице: запись, мета, опция, терм, своя таблица?
  2. Какой хук сбрасывает кэш при изменении каждого из этих мест? Нет хука — неделя устаревшего сайта — третья часть.
  3. Не сбрасывает ли кэш то, что на странице не видно: заявка, комментарий на модерации, служебная мета?
  4. Не пишет ли что-то в базу напрямую, мимо хуков?

3. Куки и заголовки

  1. Не ставит ли новая функция Set-Cookie при рендере страницы? Такой ответ nginx не кэширует.
  2. Не добавляет ли она куку, которая попадает в обход кэша? Служебная кука комментатора — седьмая часть.
  3. Если ответ не должен кэшироваться — стоит ли X-Accel-Expires: 0? nocache_headers() не поможет, если nginx игнорирует Cache-Control — 14-я часть.

4. Отдельные запросы

  1. Уходит ли запрос после загрузки страницы, а не в окне первой отрисовки?
  2. Один ли это запрос на страницу, или по запросу на каждую карточку?
  3. Что видит человек, пока запрос идёт, и что — если запрос упал?
  4. Что отдаёт этот адрес анониму и что позволяет изменить? Проверено ли это запросом без кук? — 16-я часть.

5. Фоновые задачи

  1. Работает ли крон, когда страницы отдаются из кэша? Кто его запускает и от какого пользователя? — вторая часть.
  2. Что будет, если задача упадёт посередине: повторится ли она, не зациклится ли?
  3. Не будит ли крон ваш собственный проверочный скрипт?

6. Формы

  1. Записывается ли заявка в базу до отправки по каналам? — десятая часть.
  2. Может ли клиентская проверка запереть форму? Следующее нажатие обязано дойти до сервера — 11-я часть.
  3. Проверяется ли согласие на сервере и хранится ли его редакция? — 13-я часть.

7. Проверка глазами посетителя

  1. Открыть страницу анонимно, без кук, и посмотреть статус кэша — четвёртая часть.
  2. Сделать изменение в админке и проверить анонимно, что оно появилось.
  3. Открыть страницу дважды: второй ответ — HIT, и функция по-прежнему работает.

Одна мысль на весь цикл

HTML один на всех. Личное и быстро меняющееся приходит отдельным запросом после загрузки. Всё, что видно всем, при изменении само сбрасывает кэш. Функция, которая укладывается в эти три фразы, кэшу не мешает — и кэш не мешает ей.

Как устроен и прогревается сам кэш — циклы «Кэш страниц без MISS» и «Кэш фрагментов и Redis». Как это всё сказывается на скорости в браузере — «PageSpeed без мифов».

Добавляете функцию на кэшируемый сайт?

Пришлите, что хотите сделать, — пройду этот чек-лист с вами до того, как оно сломает кэш или кэш сломает его.

· полезно?
АЧ
Алексей Чикун веб-разработчик, команда TRIOHEAD

Делаю сайты и сервисы целиком: от вёрстки до сервера. Пишу о том, что проверил на своих проектах.

Комментарии

// загружаю комментарии…

Комментарии публикуются после проверки. Ссылки и HTML не принимаются.