Назад в блог
Архитектура

Публичные страницы под контролем: кэш, доступность и Lighthouse CI

Как публичная часть портфолио получила версионируемый кэш контента, исправления доступности и автоматическую проверку в CI.

Публичные страницы под контролем: кэш, доступность и Lighthouse CI

Почему красивой страницы недостаточно

Публичные страницы портфолио уже выглядели законченными, но это не гарантирует устойчивое качество. У такой витрины три частые проблемы: контент грузится повторно без нужды, мелкие accessibility-дефекты незаметны при ручной проверке, а регрессии легко проходят в основной ветке.

Мне хотелось собрать не набор разрозненных правок, а нормальный контур контроля для /, /blog и /education.

Версионируемый кэш вместо точечных оптимизаций

В контроллерах публичного контента появился единый сервис кэша с namespace-ключами и версиями. Это дало простой механизм: страница, пагинация и фильтры читаются из кэша, а после изменения модели старое поколение ключей просто перестаёт использоваться.

Такой подход оказался практичнее ручного forget() по одному ключу:

  • не нужно угадывать все комбинации фильтров и страниц;
  • инвалидация одинаково работает для постов, проектов, фото, документов и sitemap;
  • старые записи доживают только до TTL и не ломают публикацию нового контента.

Особенно полезно это для /blog, где список зависит и от категории, и от тега, и от номера страницы.

Доступность как часть обычной разработки

Следом пришлось пройтись по самим шаблонам. На публичных страницах появились более явные состояния фокуса, skip-link, корректные подписи ссылок, активные состояния фильтров и более аккуратная структура заголовков.

Это тот класс доработок, который почти не виден на скриншоте, но резко улучшает реальное использование сайта с клавиатуры и скринридера. Для меня это хороший пример инженерной правки без декоративного шума: интерфейс остаётся тем же по смыслу, но перестаёт быть хрупким.

Lighthouse в CI как защита от отката качества

После этого проверки вынесены в CI. Workflow теперь поднимает production-конфигурацию приложения, мигрирует SQLite-базу, прогревает /, /blog и /education, а затем запускает Lighthouse с порогами по accessibility, best practices, performance и CLS.

Важно, что это не «отчёт для галочки». Если очередная правка сломает доступность, регрессия поймается до деплоя, а не после него.

Практический итог

Публичная часть стала не просто набором Blade-шаблонов, а наблюдаемым слоем с понятными гарантиями. Кэш разгрузил чтение контента, accessibility-проверки закрыли реальные UX-дефекты, а Lighthouse в CI превратил качество витрины в проверяемое правило, а не в ручное обещание.