Самая лучшая сетевая оптимизация - вообще не использовать сеть, а раздавать данные прямо из локального кеша (хотя есть
исключения). Если вы используете HTTPS, вы можете кэшировать статику в
service worker cache и предоставлять офлайновые fallback’и из этого кеша
Фил Уолтон предлагает с помощью service workers отправлять
меньше HTML, программно генерируя ответы от сервера. Service worker может запросить у сервера только необходимый минимум данных а затем программно преобразовать эти данные в полный HTML-документ. После посещения сайта будет установлен service worker, и браузер больше никогда не будет запрашивать полную HTML-страницу. Это может
очень положительно сказаться на производительности.
А что насчёт поддержки браузеров? Service worker’ы
широко поддерживаются, а если даже нет, то произойдет фоллбека на обычный сетевой сценарий. Использование сервис-воркеров позволяет
значительно улучшить производительность. Еще большего выигрыша можно добиться используя функцию Background Fetch, которая также позволяет выполнять фоновую загрузку через service worker.
Существует множество вариантов использования service worker. Например,
функция "Сохранить для офлайна",
обработать битые изображения, внедрить
обмен сообщениями между вкладками или
выбрать стратегии кэширования на основе типов запросов. В целом, самая надежная стратегия — хранить в кеше ядро приложения и несколько основных страниц.
Есть несколько моментов о которых следует помнить. Остерегайтесь
range requests в Safari. Если вы когда-либо натыкались на ошибку DOMException: Quota exceeded в консоли браузера, то загляните вот в статью Херардо Родригеса (Gerardo Rodriguez).
Когда 7КБ превращаются в 7МБ. В своей статье Херардо Gerardo рекомненудет убедиться что вы используете правильные CORS-хедеры и не кешируете
opaque ответы.
Чтобы погрузиться в тему работы с service worker’ами, Виталий Фридман рекомендует обратиться к этим источникам: