Рубріки: Новости

Перестанут ли PWA работать в Chrome 93?

Богдан Мирченко

Пользователь medium.com по имени Кевин Бэйсит предположил в своем блоге, что 52% всех Progressive Web Apps (PWA) перестанут работать с выходом Chrome 93 и Edge 93 (ожидаются в августе 2021 года). Его доводы основаны на появлении в манифесте консоли и приложения сообщения от разработчиков браузеров о смене критериев установки PWA.

В Google считают, что PWA никогда не должен отображать офлайн-экран Chrome по умолчанию. Вместо этого все PWA должны быть доступны в автономном режиме или отображать какую-то автономную страницу в качестве запасного варианта. Вероятно, это связано с распространением приложений PWA, созданных с помощью трюка, позволяющего приложениям не работать в действительности офлайн. Теперь для установки PWA разработчикам придется использовать кэш.

Для решения проблемы Кевин Бэйсит разработал ресурс Progressier. Он позволяет создать PWA-приложение за считанные минуты.

Тем, кто не заинтересован в использовании сторонних ресурсов, он предлагает набор методов, как сделать свои приложения совместимыми с ними. Согласно одному из них, нужно заполнить функцию «fetch», чтобы она кэшировала ресурсы. Для этого есть несколько способов:

— с помощью стратегии Network-Falling-Back-To-Cache ваш сервис-воркер сначала попытается получить ресурс с вашего сервиса, затем получить его из кэша.

self.addEventListener('fetch', function(event) {
   event.respondWith(async function() {
      try{
        var res = await fetch(event.request);
        var cache = await caches.open('cache');
        cache.put(event.request.url, res.clone());
        return res;
      }
      catch(error){
        return caches.match(event.request);
       }
     }());
 });

— с помощью стратегии Stale-While-Revalidate ваш сервис-воркер сначала смотрит в кэш, а также посылает запрос серверу. Если ресурс существует в кэше, он сразу отправит загрузит его на клиенту. Если сервер ответит на запрос, он сохранит данные с сервера в кэше.

self.addEventListener('fetch', function(event){
   event.respondWith(async function () {
      var cache = await caches.open('cache');
      var cachedResponsePromise = await cache.match(event.request);
      var networkResponsePromise = fetch(event.request);
      event.waitUntil(async function () {
         var networkResponse = await networkResponsePromise;
         await cache.put(event.request, networkResponse.clone());
      }());
      return cachedResponsePromise || networkResponsePromise;
    }());
});

Останні статті

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024