Использование sw-toolbox с gulp

Я прочитал много руководств по sw-toolbox и sw-precache. Сомнение, которое у меня есть, это:

Читая о sw-precache, я обнаружил, что в большинстве руководств используется gulp + sw-precache.

Принимая во внимание, что в случае sw-toolbox я видел пример и синтаксис, данные только для написания кода в service-worker.js напрямую (без кода gulpfile).

Я использую gulp для автоматического создания файла service-worker.

Поэтому моя главная задача - написать код для sw-toolbox непосредственно в файле gulp, чтобы мне не нужно было писать код sw-toolbox после создания sw-precache с gulp.

Пожалуйста, прокомментируйте сомнения


person Shashank Sood    schedule 10.09.2016    source источник


Ответы (2)


Вам не нужно вручную писать отдельный код для sw-toolbox. Вы можете настроить его, используя опцию runtimeCaching в sw-precache. Как только вы настроите эту опцию, sw-precache вставит sw-toolbox библиотеку в serviceWorker и добавит к ней разные обработчики. Более подробную информацию можно найти по этой ссылке.

person Hari krishna    schedule 10.09.2016
comment
Итак, похоже ли runtimeCaching на router.get() sw-toolbox? Предоставляет ли он все функции, такие как maxage, networktimeoutseconds и т. д. - person Shashank Sood; 12.09.2016

При использовании sw-precache он генерирует работника службы, и вы не можете редактировать этот файл.

При использовании sw-precache я бы проигнорировал sw-toolbox и просто сосредоточился на том, как настроить sw-precache для кэширования статических файлов и файлов времени выполнения (т. е. кэширования изображений или страниц по мере их запроса)

person Matt Gaunt    schedule 10.09.2016
comment
Если я хочу использовать sw-toolbox и предварительно кэшировать оба - person Shashank Sood; 12.09.2016
comment
Вы не можете так легко. SW-precache не предназначен для использования. - person Matt Gaunt; 16.09.2016
comment
см. ответ выше .. И, черт возьми, мы, очевидно, можем отредактировать его после того, как он был сгенерирован файлом gulp. - person Shashank Sood; 19.09.2016
comment
Весь смысл sw-precache теряется, если вы редактируете сервис-воркера после его создания. Ревизии файлов устанавливаются для этого экземпляра файлов и предназначены для того, чтобы при изменении файлов они принудительно обновлялись, если вы вручную просто изменяете файл сервис-воркера и не обновляете с помощью sw-precache, вы столкнетесь с некоторыми забавными проблемами с пользователей дальше по линии. - person Matt Gaunt; 19.09.2016
comment
Хорошо. Я понял вашу точку зрения, но я сомневаюсь, что после создания моего файла сервисного работника с помощью gulp, если я удалю все свои файлы (папка gulp.js, node_modules) и оставлю только сервисный работник и, конечно же, manifest.json; Тогда тоже работает нормально. И более того, если я изменяю файл сервисного работника вручную, он также работает, как и ожидалось (например, сервисный работник обновляется при следующем обновлении). - person Shashank Sood; 21.09.2016
comment
Правила кэширования для сервис-воркера, сгенерированные предварительным кэшированием, спроектированы таким образом, что никакие изменения не вносятся в предварительно кэшированные активы, пока не будут обновлены версии файлов, что должно выполняться процессом сборки gulp. Поэтому, хотя может показаться, что это работает и обновляется, я задаюсь вопросом, действительно ли вы получаете свежий контент, получат ли ваши пользователи свежий контент и как долго вы столкнетесь с реальной проблемой :( - person Matt Gaunt; 22.09.2016
comment
См. изменение чего-либо в сервис-воркере, обновите файл сервис-воркера. И это дает пользователю свежий контент по мере того, как он обрабатывается пользователем в событии активации. - person Shashank Sood; 22.09.2016
comment
Выборка даже в файле sw-precache ТОЛЬКО смотрит в кеш. Файл сервисного работника будет обновлен, но если версии файла не будут обновлены, шаг установки не будет пытаться обновить кэшированные файлы (функция sw-precache), что означает, что изменения в ресурсах не кэшируются, что означает ответ из события выборки — это старая версия файла из кеша, а не из сети. - person Matt Gaunt; 22.09.2016