Я пытаюсь создать кольцевой буфер, чтобы я мог хранить большое количество json-Data.
Цель - сохранить около 300 000 записей и циклически изменять их.Для теста я случайно создал 1000 записей (с 10 значениями с плавающей запятой на запись) и сохранил их как json в indexedDB.
Чтобы сохранить в IndexedDB, я использовал цикл (от 0 до 99) икоманда "положить".
Мое наблюдение заключается в следующем:
- При первом проходе БД создается и 100 записей успешно сохраняются.
- Также, первое обновление работает, новые случайно сгенерированные значения с плавающей точкой сохраняются.Но использование памяти значительно увеличивается.
- После второго обновления случайные данные не будут изменены, поскольку использование памяти превысило предел.
Ключ для использованной indexedDBустанавливаются в цикле (начинается с 0 и заканчивается на 99).
В других браузерах, таких как Firefox и MS Edge, тест работает хорошо даже после 100 обновлений.
Есть ли кто-нибудь, кто знает проблему или даже лучше, имеет решение?
Также можно удалить все записи из indexedDB, пока страница перезагружается.Поэтому я попытался удалить все данные во время инициализации, но и здесь использование памяти оставалось на высоком уровне.(более 230 МБ).
function getObjectStore(store_name, mode) {
var tx = db.transaction(store_name, mode);
return tx.objectStore(store_name);
}
function putDbElement(number, json, _callback) {
var obj = {
number: number,
json: json
};
var store = getObjectStore(DB_STORE_NAME, 'readwrite');
var req;
try {
req = store.put(obj);
_callback();
} catch (e) {
throw e;
}
}
for ( var i = 0; i < 100; i++ ) {
putDbElement(
i,
getRandomJson( 1000 ),
function() {
console.log( "created: " + i );
}
);
}