react-redux-starter-kit icon indicating copy to clipboard operation
react-redux-starter-kit copied to clipboard

Выпилить SSR

Open sk1e opened this issue 6 years ago • 9 comments

SSR значительно усложняет инициализацию приложения, его архитектуру и разработку.

Учитывая что целевым сегментом с нашей архитектурой и стеком являются сложные приложения автоматизирующие бизнес-процессы, SEO самих приложений редко имеет смысл, а проиндексировать можно и лендинг который можно отдельно раздавать отрендеренным.

Скорость загрузки также неактуальна. Через code splitting всё весьма быстро работать будет.

Предлагаю выпилить весь относящийся к SSR код.

Если я что-то упускаю - объясните пожалуйста.

sk1e avatar Oct 16 '19 02:10 sk1e

Да, в этом что-то есть. На большинстве проектов SSR не нужен, поэтому имеет смысл его выпилить, но оставить где-то ветку с полностью настроенным и пригодным к употреблению SSR.

Возможно стоит обсуждать этот момент на старте с заказчиками, типа есть 3 варианта:

  • мы на старте настраиваем SSR (копируем всё из ветки с SSR) и постоянно в ходе разработки поддерживаем его в рабочем состоянии. Поломать SSR вообще изи, поэтому нужно за этим следить. Нужно немного времени на настройку + разработка местами втыкается в разруливание особенностей SSR.
  • мы полностью отказываемся от SSR. Можно изначально клиенту отдавать красивый экран с прелоадером, фоном загружаются наши скрипты и стартует SPA приложение, скорость первой загрузки, как уже сказал Серега, мы можем оптимизировать с помощью асинхронных фич. Тут никаких затрат по времени нет.
  • мы на старте отказываемся от SSR, но после старта MVP мы планируем его настроить. Тут нужно сразу предупредить заказчика (!), что поздняя настройка SSR может занять много времени, т.к. все особенности SSR будут разруливаться разом, а не по мере поступления в ходе разработки.

in19farkt avatar Oct 16 '19 06:10 in19farkt

Ещё есть вариант с использованием сервисов по пререндеру https://habr.com/ru/post/418619/ https://habr.com/ru/company/renderjs/blog/327612/ Кто-нибудь изучал/пробовал?

sk1e avatar Oct 16 '19 07:10 sk1e

Кстати да, есть еще вариант юзать prerender-spa-plugin, вставляешь его в вебпак конфиг и получаешь отрисованные странички. Но это как бы не совсем SSR, сервера нет и мы не можем динамическое что-то воткнуть в странички.

in19farkt avatar Oct 16 '19 07:10 in19farkt

Я изучал темы по пререндеру около 3-х лет назад, все было плохо и поисковики в итоге херовато с ними работали.

Мне кажется, что SSR тут не надо выпиливать потому что он заствляет все вносимые в starter-kit свистопердерелки учитывать SSR, а значит, что все используемые здесь подходы не только подтвердили, что их можно подключить с имеющимся SSR, но и сразу примеры такого подключения.

Znack avatar Oct 16 '19 16:10 Znack

Я изучал темы по пререндеру около 3-х лет назад, все было плохо и поисковики в итоге херовато с ними работали.

3 года это достаточно большой срок чтобы продвинуться. Возможно стоит снова изучить

Мне кажется, что SSR тут не надо выпиливать потому что он заствляет все вносимые в starter-kit свистопердерелки учитывать SSR, а значит, что все используемые здесь подходы не только подтвердили, что их можно подключить с имеющимся SSR, но и сразу примеры такого подключения.

То, что можно накидать костылей в несколько слоев - не значит что мы движемся в верном направлении. Я не работал сам с SSR, но слушал рассуждения на собеседовании где ребята долго обсуждали какимии хаками они решали ту или иную проблему и всё это довольно грустно звучало, совершенно не хотелось бы с таким работать. Причём ломается на любой чих, судя по ПР с выпилом jss

sk1e avatar Oct 17 '19 01:10 sk1e

Ну на самом деле ты преувеличиваешь :) То, что JSS не приспособлен к SSR как раз пример сложной проблемы, когда вроде все в начале работает, но под хорошими объемами начинает лагать. Там кстати и на клиентской стороне стили лагали те вроде бы, так что там не стольо SSR виноват, сколько лагучесть рантайма JSS с кучей динамических значений. Хаки там далеко не везде, большинство задач вполне нормально решаются, просто их надо учитывать. Хак я вспоминаю только с ожиданием саг.

Znack avatar Oct 17 '19 07:10 Znack

@Znack что по поводу самого смысла использования SSR? На проектах, где я был он не нужен был. Кому вообща нужна индексация поисковиками, если мы создаём SPA по автоматизации бизнес-процессов, а не публикации контента, который важно индексировать?

sk1e avatar Oct 17 '19 07:10 sk1e

Ну на самом деле ты преувеличиваешь :) То, что JSS не приспособлен к SSR как раз пример сложной проблемы, когда вроде все в начале работает, но под хорошими объемами начинает лагать. Там кстати и на клиентской стороне стили лагали те вроде бы, так что там не стольо SSR виноват, сколько лагучесть рантайма JSS с кучей динамических значений. Хаки там далеко не везде, большинство задач вполне нормально решаются, просто их надо учитывать. Хак я вспоминаю только с ожиданием саг.

Тут немного не соглашусь.

Когда ты пишешь для ssr, нужно помнить довольно много ограничений и закрывать их костылями, которыми в итоге обрастаешь с завидной скоростью :)

Про jss и ssr.

Там проблема была не в лагучести рантайма, а в кривой реализации самого JSS, который при рендере на сервере и на клиенте по разному инкременил имена классов.

А причина лагов была иной и можно было написать с применением jss, но без лагов (ну почти без них). Просто то что везде выставляется как преимущество jss, в итоге оказалось самым слабым местом (это я про динамические стили от пропсов).

in19farkt avatar Oct 17 '19 08:10 in19farkt

По поводу костылей можно пообщаться с @DYAPIK , он в свое время адаптировал даталайт под SSR, и помимо затыка с jss, на сколько я помню, было много разного.

in19farkt avatar Oct 17 '19 08:10 in19farkt