Как кэшировать размещенные или удаленные файлы json, чтобы приложение работало в автономном режиме

Я создаю приложение, которое должно работать в автономном режиме. Это веб-приложение для видео, использующее angularjs и firebase.

Приложение получает данные из базы данных firebase, например, в файле службы js:

.service('firebaseService', function ($http) {
    this.getvideosApi = function() {
      return $http.get( 'https://gxxxxx.firebaseio.com/user-videos.json' );
    };
});

Я использую сервис для получения данных json из базы данных firebase. Видео сами по себе сохраняются в хранилище Firebase.

И в контроллере я получаю данные и отображаю их в своих шаблонах.

firebaseService.getvideosApi().then(function(response){
      vm.videos = response.data;
    });
  })

Это хорошо работает в сети, но не будет работать в автономном режиме, даже если мое приложение полностью функционально в автономном режиме, поскольку я использую sw-precache.

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

Второй вопрос также касается перехвата файлов, размещенных на cdn, с использованием предварительного кэша sw. Так что, если приложение находится в сети, файлы будут загружены, если не использовать кэшированные файлы cdns, доступные на диске.

В автономном режиме ответ заголовка файла json «не удалось загрузить данные».


person LearnToday    schedule 03.09.2016    source источник


Ответы (1)


Да, вы можете использовать параметр runtimeCaching в sw-precache для реализации разных стратегий кэширования для разных Шаблоны URL. Сюда входят результаты API, а также сторонние ресурсы, размещенные в CDN, ни один из которых вы не можете предварительно кэшировать с помощью sw-precache.

Под капотом runtimeCaching автоматически настроит и будет использовать для вас библиотеку sw-toolbox. Вы можете узнать больше в документации.

person Jeff Posnick    schedule 20.09.2016