是否有像32bytes或64Bytes这样的大小限制?在内容脚本和chrome扩展的后台页面之间传递消息?

Sid*_*tha 7 javascript api google-chrome google-chrome-extension

我正在开发一个chrome扩展,从网页中提取大型公钥.我需要知道我是否会遇到谷歌网站上与他们的消息传递API相关的任何限制.

谢谢!

Rob*_*b W 11

使用时chrome.runtime.sendMessage,邮件被序列化,并从发件人的进程(例如包含内容脚本的选项卡)一次性发送到扩展程序的进程(后台页面).IPC消息的硬限制为128 MB.如果您发送的内容大于此值,发件人的流程将被终止.

现在,消息大小为128 MB并不意味着您可以发送长度为134,217,728的JavaScript字符串,因为消息本身也需要一些空间来存储元数据.并且JavaScript字符串中的字符数不一定是字节数(假设平均而言,由任意字符组成的JavaScript字符串每个字符需要2个字节的存储空间).这将最大限制降低到50 MB.

虽然技术上可以接受50 MB,但您不应该尝试发送这么多数据.以下是Chrome启动浏览器并发送50MB数据后的任务管理器的屏幕截图.图片显示,从标签页到背景页需要5秒钟,浏览器和标签处理都使用大约300MB和扩展过程663MB(其中初始值分别为32,17和22 MB) ).

但是,几兆字节的消息不是问题.

任务管理器:293MB浏览器,281MB标签,663MB扩展名

  • @wOxxOm 我说过*任意*字符串的最大值是 50MB。发送 100MB 的 ASCII 字符串(每个字符 8 位)可以正常工作,但否则数据可能会编码为 UTF-16(或 UCS-2)。当我尝试传输大小为 55MB 的二进制文件的内容时,该选项卡被终止。 (2认同)