В зависимости от того, что вам нужно сделать с кэшированными файлами, вы можете просто использовать API-интерфейс FileIO для сохранения двоичного файла в среду изолированного окружения вашего расширения. Простое сохранение пути к исходному файлу, вероятно, не сработает, поскольку API может читать только в его изолированной программной среде [если вы сами не выбрали файлы с помощью ввода].
При необходимости вы можете добавить разрешение «unlimitedStorage» (подробнее в документации разработчика ) к вашему manifest.json , чтобы переопределить ограничения хранилища.
"permissions": [
"unlimitedStorage"
],
Это будет применяться только к файловому вводу-выводу (временному / постоянному) и веб-SQL (только временному). Благодаря синхронной реализации, localStorage имеет максимум ~ 2700000 символов (как оно хранится как UTF-16), которое не будет увеличено при установке этого разрешения.
С помощью File API и Chrome 13+ вы можете запросить определенную квоту (см. здесь и здесь для полного примера). Это было введено для работы с веб-приложениями и работает без установки разрешения unlimitedStorage . (Однако, если разрешение установлено, пользователь в настоящее время не запрашивает разрешение на хранение)
webkitStorageInfo.requestQuota(
webkitStorageInfo.PERSISTENT
newQuotaInBytes,
quotaCallback,
errorCallback);
В моих экспериментах это, кажется, единственный способ постоянно хранить большие объемы данных.