Как получить объект JSON, хранящийся в кеше, от работника сервиса?
У меня есть объект Json, хранящийся в кеше. Пожалуйста, посмотрите мой кеш здесь.
И я хочу получить значения JSON от моего работника службы
caches.open('my-post-request').then(function (cache) {
cache.match('/cached-products.json').then(function (matchedResponse) {
return fetch('/cached-products.json').then(function (response) {
return response;
})
});
});
Есть способ сделать это? исследуя ответ в консоли, я могу просто увидеть заголовки свойств, хорошо, статус, тип, URL, тело, но я не могу найти мои значения json в любом месте.
Буду признателен за любое предложение.
Спасибо
1 ответ
Вы можете попробовать что-то вроде этого:
var CACHE_NAME = 'dependencies-cache';
self.addEventListener('install', function(event) {
console.log('[install] Kicking off service worker registration!');
event.waitUntil(
caches.open(CACHE_NAME).then(function(cache) { // With the cache opened, load a JSON file containing an array of files to be cached
return fetch('files-to-cache.json').then(function(response) {
return response.json(); // Once the contents are loaded, convert the raw text to a JavaScript object
}).then(function(files) {
console.log('[install] Adding files from JSON file: ', files); // this will log the cached json file
return cache.addAll(files); // Use cache.addAll just as you would a hardcoded array of items
});
})
.then(function() {
console.log(
'[install] All required resources have been cached;',
'the Service Worker was successfully installed!'
);
return self.skipWaiting(); // Force activation
})
);
});
Это решит вашу проблему. Из приведенного выше кода вы можете просто вернуть свой ответ как response.json()
преобразовать необработанный текст в объект Javascript. Для полной реализации Service Worker для кэширования файла JSON вы можете посетить эту документацию.