sw-precache не обновляется и принимает только кешированные данные

Я пытаюсь реализовать стратегию networkfirst с помощью sw-precache.
Теперь я могу кэшировать данные и обслуживать их офлайн. Если я изменю данные (т.е. изменю заголовок с «привет» на «Добро пожаловать») на странице, она не будет отражать, она всегда берет данные из кеша и получает обновление, только если я отменил регистрацию работника службы или очистил данные сайта, тогда только я могу получить свои данные

Вот моя задача gulp sw-precache:

gulp.task('generate-service-worker', function(callback) {
  var path = require('path');
  var swPrecache = require('sw-precache');
  var rootDir = '.';

  swPrecache.write(path.join(rootDir, 'sw.js'), {
    staticFileGlobs: [
      rootDir + '/css/**.css',
      rootDir + '/js/**/*.{js,css}',
      rootDir + '/images/**/*.{png,jpg,jpeg}',
      rootDir + '/*.{html,js}',
    ],
    runtimeCaching: [
      {
        urlPattern: 'http://localhost:8080',
        handler: 'networkFirst'
      }],
    stripPrefix: rootDir
  }, callback); 
});

person Harish Karthick    schedule 16.01.2018    source источник
comment
Вы видели документацию Service Worker Precache?   -  person noogui    schedule 17.01.2018
comment
@noogui да, есть ли какая-то ошибка, которую я сделал?   -  person Harish Karthick    schedule 17.01.2018


Ответы (1)


Две вещи, которые нужно проверить:

  • Убедитесь, что вы не кэшируете файл sw.js, так как это может привести к задержке обновлений на срок до 24 часов в Chrome. (Подробности.)
  • Вы проверяете наличие обновлений контента при последующем посещении сайта после обновления? Из-за стратегии «сначала кеш» при первоначальном посещении сайта после обновления новый контент не будет отображаться (поскольку кеш обновлялся «в фоновом режиме»).
person Jeff Posnick    schedule 17.01.2018
comment
Я изменил файл gulp для кэширования sw.js, но не смог кэшировать sw.js, хотя сначала я использую сеть, у меня та же проблема. - person Harish Karthick; 18.01.2018
comment
Я имел в виду, что вы не должны не кэшировать sw.js через заголовки Cache-Control. Смотрите ответ SO, на который я ссылался, для получения более подробной информации. - person Jeff Posnick; 18.01.2018
comment
О, извини @Jeff за недоразумение, теперь я проверил кеш-память и не кэшировал sw.js, я получаю обновление своей страницы, если я проверял обновление при перезагрузке в dom или очищал кеш, иначе я не мог получить обновленный контент - person Harish Karthick; 18.01.2018
comment
Не могли бы вы поделиться URL-адресом вашего развернутого сайта? - person Jeff Posnick; 18.01.2018
comment
Я проверяю это только на локальной машине - person Harish Karthick; 18.01.2018
comment
не могли бы вы помочь решить эту проблему - person Harish Karthick; 19.01.2018
comment
У меня нет никаких конкретных предложений в целом, помимо того, что я уже сделал. Если бы вы могли развернуть это где-нибудь общедоступно, это помогло бы в отладке, но без доступа к вашему веб-приложению я мало что мог бы сделать. - person Jeff Posnick; 19.01.2018
comment
Я просмотрел pwa.vamsoft.in/sw.js, и вы не лицом, используя sw-precache, как вы упомянули в своем первоначальном вопросе. Изменили ли вы свой сайт с момента первоначального запроса? - person Jeff Posnick; 30.01.2018
comment
Да. Если я изменил содержимое HTML на домашней странице, старый будет отображаться до тех пор, пока я не отменю регистрацию работника службы и не перезагружу страницу. - person Harish Karthick; 30.01.2018
comment
Я хочу сказать, что вы задали вопрос о sw-precache, но на самом деле вы его не используете. - person Jeff Posnick; 30.01.2018
comment
Приносим извинения за это. Пожалуйста, проверьте это сейчас. - person Harish Karthick; 30.01.2018
comment
Я взглянул на ваш сайт — учитывая, что вы проповедуете свой / URL-адрес через sw-precache, он будет обслуживаться в соответствии со стратегией «сначала кеширование» (sw-precache все делает сначала с кешем). Это означает, что вы не увидите обновления до следующего посещения сайта после развертывания. Это ожидаемое поведение, и если вы хотите другого поведения, вам нужно исключить предварительный кэш HTML. - person Jeff Posnick; 30.01.2018
comment
А также подскажите, как лучше кэшировать HTML-страницы. - person Harish Karthick; 01.02.2018
comment
@jeffPosnik, пожалуйста, поделитесь вышеуказанным предварительным условием, которое я попросил - person Harish Karthick; 03.02.2018
comment
Ветка комментариев к предыдущему ответу на вопрос о переполнении стека — не лучшее место, чтобы просить о дальнейших действиях. Не могли бы вы задать новый вопрос с подробностями того, что вы ищете? - person Jeff Posnick; 05.02.2018
comment
@JeffPosnick Кстати, если вы исключите index.html из кэширования, то автономный режим не будет работать. Верно? Каково решение для этого? - person the_haystacker; 11.02.2018
comment
@JeffPosnick, пожалуйста, помогите с моим вопросом: stackoverflow.com/questions/51586398/ - person Harish Karthick; 30.07.2018