Есть ли способ передать большие объемы данных (несколько МБ) между веб-работником и основным потоком? Я работаю в проекте, где мне нужно загружать файлы, немного модифицировать их, а затем каким-то образом позволить пользователю загружать измененный файл. Я нашел следующие способы передачи данных между веб-работником и основным пользовательским интерфейсомПередайте большие объемы данных между веб-работником и основной темой
- Использование обычного метода
postMessage
. - Использование переносимых объектов (Chrome только)
- Создать ссылку URL к сгустка и только отправить URL (работает в Chrome, в других, а?)
Я думаю, что (1) в порядке, когда отправляя меньшие объекты, но занимает много времени и пространства при работе с файлами размером более нескольких МБ, поскольку он сериализуется и отправляется как JSON. Chrome предлагает способ передачи данных с помощью переносимых объектов, где данные не нужно копировать. К сожалению, это пока только функция Chrome, поскольку в противном случае это послужило бы моей цели.
Последнее, что я нашел, - это от рабочего, создать URL-адрес для blob с использованием self.webkitURL
, а затем передать только ссылку URL-адреса для пользовательского интерфейса. Это хорошо работает, я могу предоставить URL-адрес пользователю, и они могут загрузить файл. Я, к сожалению, не нашел способ сделать это в Firefox, возможно ли это?
Есть ли какие-либо другие методы, которые можно использовать для передачи данных между работниками и основным потоком?
К сожалению, это еще операция копирования, даже если это, конечно, увеличивает скорость. – Erik