У меня есть приложение, которое открывает несколько дочерних окон из главного окна через window.open()
.
Родительское окно копирует объект JavaScript из хранилищаact-redux и сохраняет его в функции внутри объекта window
как таковой window.getData() { return parentStore; }
. В дочерних окнах он получает объект JavaScript, вызывая window.opener.getData()
и сохраняет его как parentStore
в хранилище с избыточностью. Каждое дочернее окно прослушивает потоки данных, которые поступают каждые несколько секунд, и объект parentStore
обновляется в хранилище с избыточностью.
Кроме того, некоторые пользовательские действия в дочерних окнах также инициируют обновление объекта окна как таковое window.store = updates
.
Объем памяти этого приложения удваивается с каждым новым окном и продолжает увеличиваться. Загрузка ЦП в диспетчере задач Chrome также увеличивается> 100% каждые несколько секунд. Эти проблемы вызвали проблемы с производительностью, когда приложение стало практически непригодным для использования.
Мои вопросы: поскольку объект window
, передаваемый дочерним окнам, фактически является ссылкой из исходного окна, действительно ли дочерние окна обновляют тот же объект, когда он обновляет parentStore
в избыточном хранилище и window.store
объектов? И, таким образом, вызывает высокую загрузку процессора, потому что все они пытаются обновить один и тот же объект сразу? И если да, то как этого избежать или решить?
Ценю любые мысли по этому вопросу.