Почему для меня SSR на Nuxt на 300% медленнее, чем CSR?

Я создаю веб-сайт, на котором отображаются рыночные данные для более чем 500 предметов в видеоигре. В приложении Vue переход на страницу рынка произошел практически мгновенно и работал отлично. В конце концов я решил перевести проект на использование Nuxt, потому что говорят, что он быстрее и значительно меняет качество жизни. После этого загрузка страницы рынка занимала 300 мс при каждом переключении на нее и казалась медленной. Я зашел в nuxt.config.ts и добавил ssr:false. В тот момент, когда я это сделал, страница вернулась к загрузке примерно через 100 мс.

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

Почему SSR намного медленнее, чем CSR? Я новичок в Nuxt, так что, может быть, я что-то делаю неправильно? Я подумываю отказаться от Nuxt и вернуться к простому Vue, потому что Vue кажется гораздо более чистым и простым в отладке, и в нем гораздо меньше глупых проблем, возникающих из ниоткуда.

По такому расплывчатому описанию сложно определить вашу проблему. В общем, страница SSR не должна быть медленнее, чем ее аналог CSR.

Flame 10.06.2024 21:53

@Flame вполне может, если с ним не обращаться должным образом. Это не волшебный соус, чтобы просто включить SSR в приложение Vue, могут возникнуть более мелкие преимущества.

kissu 10.06.2024 22:54
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
76
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Нет конкретной причины использовать Nuxt для повышения производительности. Nuxt следует использовать, когда вам нужен SSR, например, для SEO, ускорения начальной загрузки, возможностей сервера или чего-то еще.

Nuxt поставляется с настройками по умолчанию, такими как предварительная загрузка, разделение кода на страницу и т. д. Но он также вводит новую вещь: необходимость, чтобы ваш код работал как на стороне клиента, так и на стороне сервера. В большинстве случаев некоторый код Vue несовместим напрямую с серверной частью. Например, некоторые несоответствия гидратации могут вызвать множество проблем. И это не единственное, что может привести к замедлению работы, если не учитывать сдвиг контекста клиент + сервер. Какое-то полноценное приложение, содержащее только динамические части игры, в целом может оказаться не столь полезным для подхода SSR.

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

TLDR: Nuxt в большинстве случаев ускоряет работу. В некоторых случаях это не имеет смысла.

Итак, поскольку большая часть моего приложения представляет собой динамические части, отображающие элементы, которые я получаю с сервера, для меня было бы разумнее просто придерживаться Vue?

shiro2008 10.06.2024 23:25

@ Shiro2008 в качестве общего ответа: да, в целом у вас может не быть особых преимуществ от перехода на Nuxt. Особенно, если у вас нет такого опыта работы с этим, потому что это может привести к некоторой абстракции или зависимости, на которые вам не нужно полагаться. В некоторых случаях это может быть полезно, но опять же, вы также можете делать все, что касается Nuxt, самостоятельно. Nuxt в основном предназначен для ускорения некоторых (сложных) задач в некоторых конкретных ситуациях. Для полного ответа потребуется полное погружение в ваше приложение.

kissu 11.06.2024 00:14

Другие вопросы по теме