Кэширование и Service Workers
Тема дорожной карты · Frontend разработчик
Кэширование на frontend — это практика хранения ответов, ресурсов или вычисленных данных для их повторного использования без повторных дорогостоящих сетевых запросов или вычислений, напрямую улучшающая скорость загрузки страниц и показатели Core Web Vitals. HTTP-кэширование управляется заголовками ответов: Cache-Control: max-age=31536000, immutable для статических ресурсов с хэшами в именах и Cache-Control: no-cache для HTML-документов, требующих повторной проверки. Service Workers включают продвинутые стратегии кэширования — Cache First, Network First, Stale-While-Revalidate — используя Cache API, и могут отдавать ресурсы полностью в офлайне, что критически важно для производительности PWA. На уровне приложения TanStack Query и SWR реализуют in-memory-кэширование ответов API с настраиваемыми staleTime и cacheTime, сокращая избыточные запросы в React-приложениях и ощутимо улучшая оценки Lighthouse.
Как это работает
Кэширование и Service Workers меряется Core Web Vitals: LCP (Largest Contentful Paint, цель < 2.5s), INP (Interaction to Next Paint, цель < 200ms), CLS (Cumulative Layout Shift, цель < 0.1). Инструменты: Chrome DevTools Performance + Lighthouse, WebPageTest, real-user monitoring (Sentry, web-vitals lib). Победы: минимизация JS-бандла (code split, tree shake), современные форматы (AVIF/WebP для картинок, woff2 для шрифтов), lazy-load below-the-fold, preconnect к API, CDN.
Когда применять
Оптимизируйте по реальным данным юзеров (RUM), не только lab-тестам на гигабитном wifi. Performance-бюджеты в CI (bundle-size-action); вальте PR при превышении. Performance — это фича: каждый квартал спринт на неё. Lighthouse < 80 на mobile = оставляете платящих юзеров за бортом.
Типичные ошибки
Ловушки Кэширование и Service Workers: оптимизация на "100 Lighthouse" без реальных юзеров (другие боттлнеки); preload всего ("preconnect/prefetch-шум" жрёт bandwidth); JS-тяжёлые "loading"-state маскируют реальный баг (большой бандл); анимация layout-затрагивающих свойств (используйте transform + opacity для дешёвого GPU compositing). Профилируйте на реальных mid-range mobile, не на M-series Mac.