Как выполняется рендеринг на стороне сервера Vue в длительных вычислениях? - PullRequest
0 голосов
/ 25 февраля 2019

В настоящее время я разрабатываю сайт для крупной компании, которая продает товары.У них есть обширный каталог с множеством параметров поиска и фильтров, которые - на данный момент - требуют некоторого времени для вычисления и рендеринга (около 1-2 с).Я не могу ускорить этот процесс, поскольку мне нужно проверить каждый фильтр и вернуть правильный результат.

Поэтому, когда я нажимаю флажок, чтобы применить параметр фильтрации, веб-сайт зависает (вкладка «Производительность» в ChromeDev Tools показывает мне, что движок JS довольно занят).Я боюсь, что потенциальный пользователь будет продолжать нажимать несколько раз - вместо того, чтобы терпеливо ждать - пока двигатель занят, что приводит к разочаровывающему ожиданию, заканчивающемуся галочкой-галочкой и без применения фильтрации.Я также пытался обернуть трудоемкие операции в new Promise, но все равно он не отвечал и, в конце концов, зависал браузером таким же образом.

Так что мне нужно задать два вопроса:

  • Есть ли способ запретить дальнейший ввод данных пользователем, пока Vue вычисляет результаты (и, возможно, применяет экран «загрузки»? Мои попытки сделать это, помещая конкретные инструкции в началеметода / вычисленного и до фактического тела функции, не были успешными)
  • Если бы я использовал рендеринг на стороне сервера с Vue, как бы он себя вел?Будет ли он все еще зависать в течение этой 1 секунды, ожидая полезной нагрузки сервера, или это будет сравнимо с Promise функцией?

Я не знаю, если я прояснил проблему, (Я надеюсь, что мой английский правильный, хотя, возможно, и технически неправильный, поскольку я ??) , если есть некоторые данные, которые я пропустил, я могу с радостью исправить.

1 Ответ

0 голосов
/ 25 февраля 2019

Я бы предложил перенести эту сложную логику в рабочий сценарий на стороне клиента, который выполняет запросы и любую фильтрацию.Во-вторых, в качестве уровня UI / UX следует добавить наложение «Working ...» с некоторой формой анимации, которая указывает, что работа выполняется.

Что касается выполнения этой работы на стороне сервера ... Есливы выполняете рендеринг на стороне сервера через узел, который выполняет сложные вычисления блокировки, которые будут блокировать ВСЕХ пользователей, если вы не внедрите какую-либо форму рабочего пула или рабочую очередь переднего плана RPC.Это возможно, но ответы и варианты являются более сложными и выходящими за рамки данного сайта.

Как уже упоминалось выше, рабочий с некоторой анимацией, вероятно, является лучшим способом пойти сюда.

...