влияние на производительность браузера формы Knockout.js с тысячами наблюдаемых - PullRequest
0 голосов
/ 07 июня 2019

Я создаю форму, в которой пользователь сможет добавить несколько строк с помощью knockout.js, каждая строка будет иметь 5 inputs, а пользователь потенциально может добавить сотни строк.

Iхотите использовать наблюдаемый массив и сделать его свойства также наблюдаемыми для каждого входа.

Таким образом, для некоторых пользователей может быть около 5000 наблюдаемых свойств на странице.

Есть ли проблемы с производительностью, которые могут возникнуть при таком подходе?Может замедлить работу браузера?И если есть, есть ли способы защиты от этого.

1 Ответ

1 голос
/ 11 июня 2019

Мы используем элементы управления с observables и observableArrays, которые содержат 20k + записей на стороне клиента, и теперь мы попадаем в стену javascript / knockout. с 5k все прошло довольно гладко, но это также сильно зависит от браузера / аппаратного обеспечения клиента.

1 серьезная проблема при обновлении всех предметов в obs. Массив состоит в том, что если вы будете повторять изменение, оно повесит страницу до конца итерации. Вы можете использовать метод apply, чтобы обойти это, если логика позволяет это. Function.prototype.apply ()

Я бы сказал, если вы на 100% уверены, что он не вырастет за 5 000, сделайте это, это сработает. Но, честно говоря, в настоящее время вам, вероятно, лучше оставить большую часть данных на сервере и получать только то, что вам нужно в этот момент.

...