Почему ajax-блокам нужен свой кэш
admin-ajax — это POST с no-store, nginx его не кэширует: сетка на 24 карточки — 2 с, пагинация — 2,2 с. После своего кэша — 0,2 с. Главный приём: чистая функция рендера, которую зовут и ajax, и фоновый воркер.
Пишу о том, что делаю каждый день: скорость сайтов, кэш, обмен с 1С, серверы и WordPress без лишнего.
admin-ajax — это POST с no-store, nginx его не кэширует: сетка на 24 карточки — 2 с, пагинация — 2,2 с. После своего кэша — 0,2 с. Главный приём: чистая функция рендера, которую зовут и ajax, и фоновый воркер.
Код чистки пропускал сброс в расчёте на внешнюю функцию, а её не перенесли: страницы товаров не сбрасывались никогда. Итог — карточки без картинок на телефоне. Как проверили починку и почему тихий пропуск хуже ошибки.
Баннер загружается за 180 мс, а PageSpeed пишет «задержка отрисовки элемента 2040 мс». Так проявляется анимация появления на первом экране. Как её найти, как лечить без потери дизайна и родственная ловушка со стилями в ленивом файле.
Пустые сохранения обмена, дрожь порядка (~5000 сбросов в сутки), счётчики просмотров (2,2 ГБ сирот за ночь). Подпись значимых полей, обратная ловушка — правки контентщика перестали появляться — и телеметрия причин сбросов.
Ключ не вычислять — читать строку KEY в файлах кэша и сравнивать путь без параметров. Главную точечно не чистили без всякой причины, а немедленный сброс из админки не вызывался. Бонус: 449 вариантов главной от бота соцсети.
Превью в карточках каталога (706 КБ из 960 в окне), программный «клик» по постеру (3,4 МБ всем подряд) и фоновый ролик секции (2157 КБ на 185-й миллисекунде). Как находили и как лечили: 97 / 99 / 99.
Удалённую копию нельзя отдать как устаревшую — следующий посетитель ждёт рендер. Греть после ответа через fastcgi_finish_request и во всех вариантах ключа: на одном адресе 8 ячеек, а прогревалась одна.
259 заходов поискового робота за неделю — и ни одного запроса за содержимым ленивых блоков. Почему робот не видит блоки, которые грузятся при прокрутке, как это проверить и как починить, не потеряв в PageSpeed.
X-Cache-Status говорит, что сейчас, но не что было вчера. log_format с $upstream_cache_status, временем ответа и частями ключа: BYPASS залогиненного, холодный вариант ключа или сеть — видно по одной строке.
$ tail -f /blog
Пишу разборы по скорости сайтов, кэшу и разработке — на живых проектах и с цифрами. Подпишитесь, и ссылка на новую статью придёт сразу после выхода. Без рекламы и спама, отписаться — в один клик.
или на почту