热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

超过最大IPC消息大小

如何解决《超过最大IPC消息大小》经验,为你挑选了1个好方法。

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

在此项目中,我将IndexedDB与Dexie.js 2.x版一起使用。

在Google Chrome浏览器上,我提到了错误“超出了最大IPC邮件大小”。可能是由于将如此巨大的数据放入IndexedDB引起的。我的临时实现是通过将数组转换为字符串JSON.stringify,我曾经可以解决这个问题。但是,问题再次发生。

在我的应用程序中,Project定义了一个聚合。

每个Project最多有500个Input text

每个Input text都有1个字符串,其长度最大为50k。

此外,每个Project都有Analysis,但仅包含分析参数。

每个Analysis都有很多Result

每个Result包含的长度为20k。

Input textResult通过getAll()IndexedDB 的方法获得,由projectId或过滤analysisId

我的问题是...

    如何避免这个错误?

    我想抢救存储在IndexedDB中的数据。我知道数据存储在本地文件系统中的位置。如果可能的话,该怎么做?

Josh.. 5

如果您查看是什么原因导致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相同。



1> Josh..:

如果您查看是什么原因导致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相同。


推荐阅读
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • Android JSON基础,音视频开发进阶指南目录
    Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文探讨了C语言中指针的应用与价值,指针在C语言中具有灵活性和可变性,通过指针可以操作系统内存和控制外部I/O端口。文章介绍了指针变量和指针的指向变量的含义和用法,以及判断变量数据类型和指向变量或成员变量的类型的方法。还讨论了指针访问数组元素和下标法数组元素的等价关系,以及指针作为函数参数可以改变主调函数变量的值的特点。此外,文章还提到了指针在动态存储分配、链表创建和相关操作中的应用,以及类成员指针与外部变量的区分方法。通过本文的阐述,读者可以更好地理解和应用C语言中的指针。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
author-avatar
yu诚_530
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有