Публичные страницы под контролем: кэш, доступность и Lighthouse CI
Как публичная часть портфолио получила версионируемый кэш контента, исправления доступности и автоматическую проверку в 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 превратил качество витрины в проверяемое правило, а не в ручное обещание.