在会话之间的浏览器中存储超过 100 MB 的客户端

Store more than 100 MB client side in the browser between sessions

我正在设计一个需要预加载几百 MB 客户端才能使用该服务的网站。上下文:由于服务应该以尽可能低的延迟实时使用,因此这种预加载是强制性的; “按需”流式传输内容不是一个选项(我已经研究了替代选项并且我确认这是必要的)。

问题:由于加载 400 MB 对最终用户来说是相当长的时间,有哪些可用的选项,如果用户关闭浏览器,然后重新打开网站,他们不必再次重新下载 400 MB?

一个明显的解决方案是 localStorage,但这限制为 10 MB(请参阅 What is the max size of localStorage values?)。

还有哪些其他选项(存储的数据应该可以从 JavaScript 获得)?

我可以要求用户安装 Chrome 扩展程序,但它是否允许超过 10 MB 的存储空间?

仅考虑存储问题... 你没有太多选择。

  1. IndexedDb。在 IndexedDB 上构建和操作不需要进一步的许可。 IndexedDb 被主流浏览器支持(你必须检查 Safari) IndexedDb 是一个奇怪的对象,你会在你研究它的时候看到它。您几乎可以像在处理真实数据库一样创建、读取、更新和删除。我不会将它称为关系数据库,如 Oracle、mySQL、Sql 服务器...但是,它是一个事务数据库。

  2. 文件系统访问API.此解决方案需要用户同意访问用户文件系统(通过“用户手势” “并且每次用户退出浏览器会话时它都会丢失 - 这很无聊)。如果您的 400 Mb 数据不是结构化数据,例如audio/video 用户播放的文件。

    请注意,即使没有扩展名,它也能正常工作。可以找到更多信息 here。 这是一个例子:https://googlechromelabs.github.io/text-editor/

我建议你第一种方式。