2016-09-06 2 views
0

Вот мой глоток задача:Как изменить стратегию кэша по умолчанию Первая стратегия для сетевой стратегии в sw-precache?

gulp.task('service-worker', ['clean:sw'], function (cb) { 
swPrecache.write(path.join(global.config.offlineRoot, 'sw.js'), { 
    staticFileGlobs: [ 
     global.config.offlineRoot + '/offline/**/*.{js,html,css,png,jpg,jpeg,gif,svg,ttf,woff,woff2}', 
     global.config.offlineRoot + '/manifest.json' 
    ], 
    dynamicUrlToDependencies: { 
     '/app-shell': ['lib/views/layouts/app-shell.hbs'], 
     '/': [ 
      'lib/views/layouts/main-layout.hbs', 
      'lib/views/index.hbs' 
     ] 
    }, 
    runtimeCaching: [ 

     { 
      // See https://github.com/GoogleChrome/sw-toolbox#methods 
      urlPattern: /^\/(?!login|admin)/, 
      handler: 'networkOnly' 
     } 


    ], 

    stripPrefix: global.config.offlineRoot, 
    stripPrefixMulti: { 
     "node_modules/": 'scripts/' 
    }, 
    navigateFallback: '/app-shell', 
    navigateFallbackWhitelist: [/^\/(?!login|admin)/], 
    cacheId: "nodebeats", 
    // importScripts: ['scripts/sw-toolbox/sw-toolbox.js'], 
    verbose: true, 
    maximumFileSizeToCacheInBytes: 3097152, //3mb 
    handleFetch: true//(global.config.env === 'prod') 
}) 
    .then(cb) 
    .catch(function() { 
     cb(); 
    }); 

});

Из вышеприведенной конфигурации вход и маршрут администратора выбираются только с использованием сети, а индексный маршрут обслуживается сначала из кеша, но я хочу, чтобы это была сеть. Сначала, поскольку я привязываю свою страницу со стороны сервера. Таким образом, динамические данные не будут реплицироваться в приложении, если ctrl + f5

ответ

1

Для этого случая использования, где ваш веб-контент необходимо визуализировать на сервере динамически, я не думаю, что sw-precache подходит. sw-precache может пригодиться для certain types ресурсов, предоставленных сервером, но только тогда, когда содержимое, отображаемое сервером, зависит от одного или нескольких локальных партитур/шаблонов, которые затем составлены на сервере. (Вы бы установить, что отображение с помощью dynamicUrlToDependencies.)

В тех случаях, когда содержание сервера визуализации зависит от чего-то другого, чем местные шаблонов/обертоны, как если бы это зависит от текущего пользователя, sw-precache не будет большой помощи. Вы можете использовать sw-toolbox, чтобы обращаться к этому типу динамического контента, если хотите - что-то вроде стратегии networkFirst накладывает баланс между предоставлением нового ответа всякий раз, когда есть сетевое соединение, с отказом от возврата к предыдущему кэшированному отклику, когда сеть недоступна.

Смежные вопросы