~ / blog

Блог — страница 13

Пишу о том, что делаю каждый день: скорость сайтов, кэш, обмен с 1С, серверы и WordPress без лишнего.

#PageSpeed 3 мин

Отложенные адреса в готовой разметке: картинки ниже сгиба без переписывания шаблонов

Функция переносит src и srcset в data-атрибуты в выводе любого плагина или слайдера, скрипт возвращает их после первой отрисовки. Одна разметка для всех, кэш не ломается. Окна: 6885 → 274 КБ, 2546 → 387 КБ.

· · ·
#Кэширование 2 мин

Перечень адресов для прогрева обязан выводиться сам

Ручной список потерял архив каталога на двух сайтах. Три источника: перечисление из WordPress, карта сайта и самоочистка по коду ответа — почему пятисотку запоминать нельзя. Бонус: отчёт о 33 адресах с 404 в карте сайта.

· · ·
#Кэширование 2 мин

Реестр, который может только расти, и решение не сокращать ячейки

Прогрев сам продлевал ячейкам жизнь: 31 115 из 31 115 «тронуты за сутки». Когда отметки перестали врать — 24 264 холодных, 88 % из них один блок. И почему мы греем всё видимое, хотя посетители трогают 55 ячеек в час.

· · ·
#WordPress 3 мин

Просмотры и лайки, когда страница отдаётся из кэша

Цифр нет в HTML: один запрос после загрузки засчитывает просмотр и приносит счётчики. Просмотр раз в 12 часов с адреса, без ботов и редакторов, атомарный UPDATE вместо «прочитать и записать», голос на сервере без куки.

· · ·
#Кэширование 2 мин

Зачем обход сайта, если есть инвалидация

Свежесть даёт инвалидация, а обход нужен для другого: после массового сброса первым посетителем должны быть мы, хвост редких страниц надо защищать от вытеснения, а из разметки обходчик собирает реестр блоков.

· · ·
#WordPress 3 мин

Вошедшие пользователи, пароль и предпросмотр на кэшируемом сайте

Три служебные куки в обходе кэша, обход и запрет записи — разные настройки, «у меня обновилось, а у посетителей нет» и интерфейс только для редактора: класс на body, данные в data-*, код динамическим импортом.

· · ·
#Кэширование 2 мин

Сторож полноты кэша: сверка раз в 5 минут за 0,05 секунды

Сверять версию кода, а не наличие: после выката все ячейки на месте, но холодные. LIKE по значению — 10,79 с, время истечения минус срок — 0,05 с с точностью 99,7 %. Перечень теми же функциями, что очередь: 1202 против 1156 — это дыра.

· · ·
#PageSpeed 2 мин

Атрибут loading=lazy не работает внутри display: none

Меню, вкладки, фильтры: картинки в скрытых элементах Chrome грузит сразу, несмотря на lazy. 27 КБ скрытого меню на каждой странице и 94 КБ декора, который не показывается нигде. Как найти одной строкой и как лечить.

· · ·

$ tail -f /blog

Не пропустите новые статьи

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

В Telegramодна кнопка «Старт» в боте

или на почту

связаться

Расскажите о задаче