Если ответ от api - JSON или файл данных подобного типа, вы можете сохранить его в indexDB в виде строки или манипулировать, как вам нужно. Вот пример хранения JSON в виде строки.
//JSONfile is the response from your api.
var JSONstring = JSON.stringify(JSONfile)
// Storing JSON as string in indexDB
var dbPromise = idb.open('JSON-db', 1, function (upgradeDB) {
var keyValStore = upgradeDB.createObjectStore('JSONs')
keyValStore.put(JSONstring, 'samples')
})
//provide better key name so that you can retrieve it easily from indexDB
OtherВ случае, если ответ является своего рода мультимедиа, вы можете преобразовать его в BLOB-объект и затем сохранить BLOB-объект в indexDB.
return fetch(new Request(prefetchThisUrl, { mode: 'no-cors' }))
.then((resp) => {
resp.blob()
.then((blob) => {
return db.set(prefetchThisUrl, blob);
});
});
Затем вы можете получить информацию из indexDB, когда это необходимо. Для хорошего понимания хранения иИзвлекая BLOB-объект из indexDB, вы можете посетить этот сайт: https://hacks.mozilla.org/2012/02/storing-images-and-files-in-indexeddb/
И для предоставления правильных данных на вашей странице это не проблема, вам просто нужно настроить свою логику, чтобы отвечать на запрос от indexDB. Вот как вы можетесделай это.
dbPromise.then(function (db) {
var tx = db.transaction('JSONs')
var keyValStore = tx.objectStore('JSONs')
return keyValStore.get('samples')
}).then(function (val) {
var JSONobject = JSON.parse(val)}