Есть ли ограничение размера, например 32bytes или 64Bytes? для передачи сообщений между сценариями контента и фоновыми страницами для расширений chrome?

Я разрабатываю расширение chrome, которое извлекает большие открытые ключи с веб-страниц. Мне нужно знать, столкнусь ли я с какими-либо ограничениями, которые я не могу найти на веб-сайте googles, которые касаются их API передачи сообщений.

спасибо!

1 ответов


при использовании chrome.runtime.sendMessage, сообщение сериализуется и отправляется из процесса отправителя (например, вкладка, содержащая сценарий содержимого) в процесс расширения (фоновая страница) за один раз. Жесткий предел сообщения IPC -128 МБ. Если вы отправите что-то большее, процесс отправителя будет завершен.

теперь размер сообщения 128 МБ не означает, что вы можете отправить строку JavaScript длиной 134,217,728, потому что само сообщение также требуется некоторое пространство для хранения метаданных. И количество символов в строке JavaScript не обязательно количество байтов (предположим, что в среднем строка JavaScript, состоящая из произвольных символов, требует хранения 2 байта на символ). Это снижает максимальный лимит до 50 МБ.

хотя 50 МБ технически приемлемо, вы не должны пытаться отправить так много данных. Вот скриншот диспетчера задач Chrome сразу после запуска браузера и отправки 50 МБ данные. На рисунке показано, что потребовалось 5 секунд, чтобы получить сообщение с вкладки на фоновую страницу, и что браузер и процесс вкладки используют около 300 МБ и процесс расширения 663 МБ (где начальные значения были 32, 17 и 22 МБ соответственно).

сообщения в несколько мегабайт не проблема.

task manager: 293MB browser, 281MB tab, 663MB extension