Задать вопрос
@vladimirir

Можно ли в Nuxt не рендерить сайт на каждом хите?

Есть сайт, у которого бэк на Битриксе, фронт на Vue. Пользователь получает SPA, в котором axios-запросами подтягиваются данные из базы Битрикса. Часть страниц-шаблонов Vue имеет зашитый в них статический контент (какой-то текст, который меняется раз в три года условно). Появилась необходимость, во-первых, настроить на сайте поиск, который будет работать не только по данным базы (в этом плане уже есть поиск битрикса), но и тот, который будет индексировать страницы Vue с их статичным контентом (и, возможно, если отказываемся от использования поиска Битрикса, то и с динамическим контентом сразу, который подтягивается из базы), думаем сделать его на эластике, во-вторых сделать сайт доступным для индексации поисковыми роботами, то есть, предположительно, нам требуется SSR.

Начали переносить сайт с Vue на Nuxt. Есть идеальная картинка того, что в конечном итоге должно получиться:
- на сервере рендерится SPA (то есть, подтягиваются данные по всем axios-запросам, вставляются на свои места на страницах, всё отрисовывается)
- это приложение возвращается пользователю (соответственно, поскольку это уже готовый html со всеми нужными данными, то оно уже пригодно для индексации поисковыми роботами), на его же основе формируется индекс Эластики. -
- при этом само приложение собирается только тогда, когда в нём что-то меняется (либо меняются какие-то данные в базе, либо что-то менялось руками в файлах; у нас редко что-то меняется). Всё остальное время это уже готовый билд, который лежит на сервере и возвращается пользователям (соответственно, получив его как SPA-приложение, они переходят по страницам без загрузки, не отправляют запросов на сервер (за исключением одного случая, который опишу далее)).

При этом требуется, чтобы клиентская часть js всё же работала нормально в SPA, чтобы работала какая-то условная анимация по наведению мыши и, чтобы работало различение разрешений экранов и браузеров для того, чтобы можно было показывать соответствующие стили.
Я совсем недавно начал разбираться с Nuxt и SSR вообще, хочу уточнить, возможно ли то, что я описал и насколько это вообще оптимально? Мне скорее интересно понять, как обычно делают в подобных ситуациях, хотя и понимаю, что каждый случай индивидуален.

* нужна будет всё-таки в паре мест возможность отправлять запросы на сервер — при заполнении формы, в которой оставляют контактные данные, там данные отправляются на адрес другого сайта.
** есть ещё вопрос с разделом новости (условно). В нём выводятся первые пять новостей, то есть, их опять же можно отрисовать сразу на сервере. Но для остальных есть кнопка "Показать ещё", вызывающая метод подгрузки ещё пяти. Соответственно, если я хочу, чтобы поисковый робот (и эластика) могли собрать все данные, которые могут быть на странице (ну то есть, на странице "Новости" все новости появятся после 10 кликов по кнопке "Показать ещё"), то как мне лучше поступить, и как вообще обычно делают в таких случаях?
  • Вопрос задан
  • 144 просмотра
Подписаться 1 Средний 2 комментария
Решения вопроса 1
Aetae
@Aetae
Тлен
На всякий, чтоб убедиться что мы на одной волне: обычный SSR работает ровно один раз - когда пользователь только зашёл на сайт. Дальше пользователь перемещается внутри SPA. Каждый раз перезапрашивают SSR страницы только боты.
По этому обычно тут ничего не оптимизируют.

Однако если хочется - вместо того, чтоб что-то городить, следует воспользоваться классическим кэшированием: выделить nginx который будет кэшировать ответы, а не мучать сервер, и не париться.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы