Электронный рабочий: скрытое окно браузера вызывает отставание фронта - PullRequest
0 голосов
/ 08 октября 2019

У меня есть скрытое окно браузера как мой рабочий. Есть много запросов, отправленных одновременно, то есть, отправляемых в работнике. Даже если запросы отправляются рабочим, это приводит к зависанию и задержке основного окна браузера.

Любые решения ..?

Ответы [ 2 ]

0 голосов
/ 10 октября 2019

Это гоча в мире электронов. Когда вы создаете окно браузера и вкладки от него, Chromium начинает регулировать весь JavaScript, который выполняется в этом фоновом окне, предполагая, что пользователь не заботится о процессах внутри этого окна. Таким образом, Chromium искусственно ограничивает количество ресурсов, доступных для этого окна браузера.

Вы можете передать дополнительную опцию конфигурации, чтобы Chromium не делал такое регулирование в окне браузера.

Если вы поделитесь своим классом BrowserWindow, я мог бы предоставить решение, но вы пока не предоставили ни одного кода.

Исходя из того, что вы предоставили ниже, решение будет такимвыглядит так:

let workerWin = new BrowserWindow({
  webPreferences: { backgroundThrottling: false }
});

Как правило, я бы вытянул app и BrowserWindow из electron примерно так:

const { app, BrowserWindow } = electron;

Создайте переменную mainWindow примерно так:

let mainWindow;

и затем применение этого объекта app с помощью метода готовности, например:

const electron = require("electron");

const { app, BrowserWindow } = electron;

let mainWindow;

app.on("ready", () => {
  mainWindow = new BrowserWindow({
    webPreferences: { backgroundThrottling: false }
  });

});
0 голосов
/ 09 октября 2019

Похоже, вы обнаруживаете, что размещение большого количества информации, связанной с приложением, в обычном IPC между основным процессом и процессом (-ами) рендеринга приводит к снижению производительности приложения. Джеймс Лонг написал об этом - https://jlongster.com/secret-of-good-electron-apps

Вместо того, чтобы использовать скрытое окно рендеринга (BrowserWindow) для запуска вашего кода не рендеринга, подумайте о разветвлении основного процесса и запуске IPC туда / обратно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...