gpt4 book ai didi

google-chrome - 超出最大 IPC 消息大小

转载 作者:行者123 更新时间:2023-12-01 23:07:49 25 4
gpt4 key购买 nike

目前,我正在开发在 Web 浏览器上运行的工具。

在这个项目中,我使用 IndexedDB 和 Dexie.js ver 2.x。

在 Google Chrome 上,我提到了错误“超出最大 IPC 消息大小”。可能是由于将如此庞大的数据放入IndexedDB造成的。
我的临时实现是通过 JSON.stringify 将数组转换为字符串,我曾经可以解决这个问题。然而,问题又出现了。

  • 在我的应用程序中,一个名为 Project 的聚合被定义为。
  • 每个Project最多 500 Input text .
  • 每个Input text有 1 个字符串,其长度可达 50k。
  • 另外,每个ProjectAnalysis ,但它只包含分析参数。
  • 每个Analysis有很多Result .
  • 每个Result包含长度为 20k 的内容。
  • Input textResultgetAll() 获取IndexedDB 的方法,通过 projectId 过滤或 analysisId .

  • 我的问题是...
  • 如何避免这个错误?
  • 我想拯救存储在 IndexedDB 的数据。我知道数据在本地文件系统中的存储位置。如果可以的话,怎么做?
  • 最佳答案

    如果查看Chrome实现中导致此错误的原因,例如https://chromium.googlesource.com/chromium/src.git/+/master/content/browser/indexed_db/indexed_db_database.cc ,当消息大小过大时会发生这种情况。这里的消息大小基本上是指作为某些处理的结果从 C++(浏览器二进制文件)发送到 Javascript 的数据量。

    为避免发送过多数据,您可以执行以下操作:

  • 确保您永远不会在大量数据上调用 getAll
  • 对潜在的大量数据调用 getAll 时使用限制
  • 使用 openCursor 代替 getAll
  • 存放较小的元素

  • 我认为最好的办法是尝试切换到 openCursor。这将一次检索您的项目(每个请求)。这样您就可以避免遇到此错误。使用游标会损失一点点速度,但可以获得可扩展性。

    要像 getAll 一样使用游标来工作,这很简单。您需要做的就是首先声明一个空数组,然后启动游标并进行迭代,每次将游标项添加到数组中。在迭代结束时,您基本上一次一个地组装了与调用 getAll 相同的数组结果。

    关于google-chrome - 超出最大 IPC 消息大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52717593/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com