CSR "поверх" SSR - имеет ли смысл?
Является ли нормальной практикой следующий подход:
- Отдать клиенту страницу, используя SSR (Server Side Rendering) (клиент получает html-документ с разметкой, готовой к отрисовке в браузере)
- Заменить контент (или часть контента) на странице, используя CSR (Client Side Rendering)
Менее абстрактный пример:
Рендерим страницу из Django-шаблона, на страницу подключаем JS-скрипт (для ещё меньшей абстракции пускай это будет Vue.JS). После получения страницы клиентом, скрипт инициализируется, происходит монтирование компонента в один из DOM-элементов - то есть происходит клиентский рендеринг, который перезаписывает собой то, что отдал сервер
Насколько мне известно, SSR на стороне фреймворка (например Nuxt.Js) работает примерно таким же образом, с оговоркой в том, что SSR-контент не полностью перезаписывается CSR-контентом, а "гидратируется" - добавляются только новые элементы/собтия/етц
Причины использования такого механизма, которые я вижу:
- Страница отданная SSR-ом более SEO-дружелюбна (как минимум есть гарантии того, что поисковые роботы её прочитают)
- Интерактивные элементы проще реализовывать, используя какой-либо фреймворк (конкретно в этом вопросе он нужен)
Жизнеспособна ли такая схема в принципе (будет ли выигрыш, во времени FCP (First Contentful Paint) и SEO)? Или можно отказаться от этапа SSR и отдавать клиенту пустой документ со скриптом, отрисовывающим контент?