Обновление сервиса Worker в браузере Facebook - PullRequest
6 голосов
/ 20 июня 2019

Возникла проблема, когда у некоторых из наших пользователей в наших браузерах Facebook с наших сайтов глючил сервисный работник.

Проблема: пользователи приложения Facebook получают нашу страницу «Вы в автономном режиме» набраузер FB, когда они получают доступ к нашим страницам, размещенным на FB.

Похоже, ошибка заключалась в том, что старая версия Google Workbox (3.6.1) автоматически возвращала страницу «Вы находитесь в автономном режиме» вПриложение FB, использующее Chrome 75. Обновление Workbox исправило его.

Ссылка на Workbox была в сервисном работнике, поэтому, когда мы обновляли нашу версию Workbox (которая исправила проблему), некоторые пользователи все еще сохраняли в кэше старую версию.

Если пользователи очищают свои кэши приложений FB или переустанавливают FB, то все хорошо, и они могут видеть наш контент.Но мы хотели бы попытаться принудительно обновить ПО, не прося их сделать это.

Чтобы стереть старый Service Service Worker из браузера FB, мы попытались сделать следующее:

<script>
"use strict";
console.log("Service Worker Registration");

  function isFacebookApp() {
    var ua = navigator.userAgent || navigator.vendor || window.opera;
    return (ua.indexOf("FBAN") > -1) || (ua.indexOf("FBAV") > -1);
  }

  if ("serviceWorker" in navigator) {
    if(isFacebookApp() == true) {
      console.log("Service Worker Registration: using v2, via Facebook App");
      navigator.serviceWorker.getRegistrations().then(function(registrations) {
        for(let registration of registrations) {
          console.log("Service Worker Registration: "+registration);
          registration.unregister();
        }
      });
    } else {
      console.log("Service Worker Registration: using v2, not via Facebook App");
      window.addEventListener("load", () => {
          navigator.serviceWorker.register("/sw.js");
      });
    }
  }
</script>

Однако наша аналитика показывает, что мы все еще получаем хиты на странице «Вы находитесь в автономном режиме», и мы по-прежнему получаем отчеты от пользователей о том, что они могут переходить по ссылкам на наши статьи.

Кто-нибудь может помочь?Есть ли способ заставить браузер FB в приложении обновить кэш и заставить наших пользователей использовать работающий сервисный работник?

Обновление

Пока мы пытались:

  • Дурак браузера, чтобы обновить работника службы, используя строку запроса в URL регистрации SW
  • Итерация по регистрации и отмена регистрации () (см. Выше)
  • Использование skipWaiting() в коде Service Worker
  • Добавление 'no-cache' к нашим заголовкам на sw.js
  • Обеспечение того, чтобы sw.js не кэшировался сервером
  • Удаление или изменение страницы /offline привело к net::ERR_FAILED ошибке
  • Мы подозревали, что во всех наших ревизиях сервисного работника может быть какая-то невидимая ошибка, поэтому мы попробовали «пустой» сервисработник, чтобы увидеть, сработает ли это, и избавиться от других

Наша аналитика показывает следующее:

  • Chrome Mobile 75 может быть проблемой
  • проблемпохоже, что это произошло с 6 по 7 июня.

Ничего не помогло: наш сервисный работник, или что-то , все еще возвращает страницу в автономном режиме ...

Ответы [ 2 ]

2 голосов
/ 26 июня 2019

Это ошибка в Chrome / Chromium WebView, отслеживаемая в https://bugs.chromium.org/p/chromium/issues/detail?id=977784

Исправление должно быть широко распространено на этом этапе.

1 голос
/ 25 июня 2019

мы столкнулись с той же проблемой, но представили ее немного по-другому - наши пользователи начали получать сообщение об ошибке «net :: ERR FAILED», хотя это звучит по той же причине. Проблема началась около 10 дней назад, и единственный способ, которым мне удалось обойти кеш, - это отправить пользователей на новую версию сайта - удалив www. с URL-адреса, на который я отправляю, и прекращение этого с 301'ing до с помощью www.

Я также попробовал несколько таких решений, как у вас, но, кажется, невозможно заставить сервисного работника связаться с веб-сайтом - если вы поместите Чарльза между телефоном и интернетом, вы увидите, что трафик не достигает твой сайт. Я надеюсь, что после периода неиспользования служебный работник будет очищен кешем приложения, и мы сможем вернуться обратно. Извините, я не могу помочь, но будьте уверены, вы не одиноки!

...