Javascript 如何在chrome扩展中从磁盘写入和读取文件?

Javascript 如何在chrome扩展中从磁盘写入和读取文件?,javascript,file,google-chrome-extension,Javascript,File,Google Chrome Extension,仅在出现XY问题时对场景进行注释: 我需要从我的服务器请求一些json文件,但我希望以某种方式缓存它们以避免再次请求 我可以使用下载api创建json文件,但存在两个问题: 我不知道如何指定自定义文件夹(我想我可以使用chrome.downloads.downloadAPI withsaveAs=true)来解决这个问题) 我不知道如何读取该文件(可能出于安全原因而无法读取?) 我在想也许可以在我的chrome扩展文件夹中写,因为我们可以从那里读取文件,但我找不到如何做,我发现说是不可能的,但

仅在出现XY问题时对场景进行注释:
我需要从我的服务器请求一些json文件,但我希望以某种方式缓存它们以避免再次请求

我可以使用下载api创建json文件,但存在两个问题:

  • 我不知道如何指定自定义文件夹(我想我可以使用
    chrome.downloads.download
    API with
    saveAs=true
    )来解决这个问题)
  • 我不知道如何读取该文件(可能出于安全原因而无法读取?)
  • 我在想也许可以在我的chrome扩展文件夹中写,因为我们可以从那里读取文件,但我找不到如何做,我发现说是不可能的,但从2011年开始,也许现在有办法解决这个问题


    我也可以尝试用chrome.storage保存它,但是我的json非常大,每个3MB,我有100多个,不确定chrome.storage是否可以毫无问题地管理它,它在这里说5MB:但是我们可以添加
    无限制存储
    权限来避免这个限制,问题是我不确定这会有多安全,也许还有更好的解决方案。

    由于您编写文件的主要目的是缓存网络请求,并且您可以控制web服务器,因此我建议您利用浏览器的HTTP缓存,而不是尝试创建自己的缓存层

    要开始,请确保您的JSON文件具有
    缓存控制
    头。此标题告诉浏览器对资源使用何种缓存策略。下面的MDN文章是了解更多缓存控制指令的重要资源。一旦知道要使用什么缓存策略,就需要查阅web服务器的文档,了解有关如何配置web服务器以使用这些设置的详细信息


    在过去的5年里没有什么真正的变化,API基本上是冻结的。在仅Chrome的扩展中,您可以使用旧的HTML5文件系统API,并在准备好后切换到新的文件系统API。至于配额,可能有navigator.webkitPersistentStorage。您可能还希望使用LZStringUnsafe或Zip/LZMA库压缩JSON(甚至可能将其编译成WASM),并将其存储为UTF-16字符串,要从用户文件系统读取任意文件,用户必须在中的扩展名详细信息页面上启用文件访问开关chrome://extensions 当然,您的扩展名应该具有
    文件://*/*
    权限或
    ,因此,您可以将标准的XHR/fetch与文件的标准文件://URL一起使用。@wOxxOm您能详细介绍一下如何从具有Chrome扩展名的磁盘读取文件吗?我在谷歌搜索,每个人都说这是不可能的安全reasons@wOxxOm也许用其他字符串压缩json可以实现chrome.storage的功能,我会试试LZStringUnsafeUhm?如果您启用了交换机并添加了如上所述的权限,那么它是一个标准的XHR或fetch,URL类似'file:///C:/path/foo.json'