Возможно ли закешировать около 1 гб в браузере?

В планах написать специфическое веб приложение. Основное требование, чтобы пользователь мог работать с пакетом данных независимо от скорости подключения интернета, в том числе в офлайне. "Пакет данных" это около 300-400 мегабайт (скорость работы с ним приличная даже на слабых девайсах). На написание приложений под разные платформы ресурсов нет.
Возможно ли сохранить такой объем данных в современных браузерах и каким образом это сделать лучше всего?
Интересует прежде всего chrome и safari, в том числе на смартфонах.
  • Вопрос задан
  • 755 просмотров
Пригласить эксперта
Ответы на вопрос 3
@zkrvndm
Боты, парсеры, расширения
Возможно конечно. Для хранения больших объемов данных в браузерах существует встроенная БД IndexedDB.

Для работы с ней сначала подключаем специальную библиотеку, которая упрощает ввод и вывод:
<script src="https://cdnjs.cloudflare.com/ajax/libs/localforage/1.9.0/localforage.js"></script>

Далее, чтобы сохранить какие-то данные выполняем в консоли браузера:
result = await localforage.setItem('key', save_data);
console.log('Данные успешно сохранены:');
console.dir(result);

Где в save_data лежат сохраняемые данные, а key это ключ по которому можно было бы получить к ним доступ.

Из особенностей, в save_data мы можем положить любой тип данных - хоть строку, хоть массив, хоть объект. Да даже файл при желании можно сохранить! При этом нет ограничений по объему хранимых данных, можете хоть сто мегабайт, хоть триста запихнуть - встроенное хранилище все сожрет.

Чтобы потом извлечь сохраненные данные достаточно выполнить:
result = await localforage.getItem('key');
console.log('Данные успешно извлечены:');
console.dir(result);

Срок хранения данных - неограниченно. Или пока пользователь вручную не обнулит кеш браузера.

P. S. Обратите внимание, что если вы где-то в своем коде внутри функции используете слово await, то такая функция обязательно должна иметь приставку async! Иначе получите ошибку. В консоли можно использовать await в лоб, но для использования await в коде нужно, чтобы функция внутри которой она вызывается была асинхронной!!!
Ответ написан
daemonhk
@daemonhk
ПсиХоПат
Нет (5-10 Мб максимум), да и глупо звучит. Что будут делать пользователи с ограниченными ресурсами?
Ответ написан
firedragon
@firedragon
Senior .NET developer
https://developer.mozilla.org/en-US/docs/Web/API/I... Скачивайте все локально и запускайте какой нибудь электрон. Пс гиг в кэше это жестко! По идее смотрите лимиты
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы