Первоначально опубликовано Jakub Klimek в блоге AltaLogy
История рендеринга решения
С момента заря веб-истории единственный способ получить ваш сайт на экране с помощью SSR. Вам пришлось загрузить свой HTML & Styles на сервер, он составлял все, а затем вы были готовы просматривать с полностью заполненным HTML.
Однако это были времена, когда страницы в основном содержались картинки и текст, как первый веб-сайт в истории → http://info.cern.ch/ , что выглядит так:
Быстро прыгает в наши дни, больше не так. Текущие сайты ближе к веб-приложениям, таких как Facebook, Twitter или eBay. Мир Интернета вырос и стал более требовательным. Потребности пользователей увеличились, люди хотят отправлять сообщения, получить его в режиме реального времени, смотреть видео, иметь больше взаимодействия с веб-сайтом. Разработчики начали представлять веб-сайты на стороне клиента с использованием фреймворков, таких как угловой, позвоночник, Ember, Rect.js e.t.c.
Если вы спрашиваете себя, какой метод лучше, CSR или SSR – прежде всего, вы должны спросить себя – что вы хотите построить или достичь?
- Узнать реагировать?
- Создайте приложение для одного страницы?
- Хотите построить интерфейс для нового веб-приложения?
- Построить сайт в основном статично?
На этом выборе это зависит от того, что вы должны принять решение.
Задний план
Всякий раз, когда вы открываете веб-сайт, ваш браузер делает запрос на сервер, чтобы получить содержимое веб-HTML, активов, стилей и остальных данных.
Скорость запроса и ответа зависит от нескольких вещей:
- Скорость подключения к Интернету
- Расстояние между вами и сервером
- Оптимизация CDN
- Сколько пользователей пытаются открыть свой сайт в один момент
- Как сайт оптимизирован для загрузки
Когда веб-страница загружена, она может быть отображена в браузере ( рендеринг на стороне клиента ) или на сервере ( рендеринг на стороне сервера ). Каждый немного другой и имеет свои плюсы и минусы.
Рендеринг на стороне клиента
Что такое рендеринг на стороне клиента?
С помощью решения для рендеринга на стороне клиента, когда пользователь открывает ваш сайт, его браузер делает запрос на сервер, и пользователь получает ответ с одним HTML-файлом без какого-либо содержимого, экрана загрузки, например, E.C.C. Это пустая страница, пока браузер не извлекает все связанные Javascripts и позволяет браузеру компилировать все перед рентом контента.
Клиент-рендеринг ProS:
- Быстро рендеринг после начальной нагрузки
- Быстрее навигация
- Нижняя нагрузка на сервер
- Замечательно для веб-приложений
Клиентский рендеринг годов:
- медленная начальная нагрузка
- непредсказуемая производительность – вы никогда не знаете, откроет ваш пользователь и «компилировать» ваш сайт на мобильном устройстве с очень медленным подключением к Интернету или Не обновлен браузер
- Решения маршрутизации на стороне клиента могут задержать вспыльчивость.
- SEO – если вы не реализованы правильно
- Начальные REQ загружает страницу, CSS, макет, JS,
- Некоторые или все контент не включены
Серверный рендеринг
Что такое рендеринг на стороне сервера?
Как я уже упоминал выше, – SSR не новая концепция. Он использовался с момента первого Backend Solution, как PHP или Java. Серверный рендеринг – это метод для визуализации вашего сайта. Когда пользователь открывает вашу страницу, его браузер делает запрос на сервер, а сервер генерирует готов к HTML.
Серверный рендеринг ProS:
- SEO дружелюбный – SSR гарантирует ваши страницы легко индексируются поисковыми системами
- Лучшая производительность для пользователя – пользователь увидит контент быстрее
- Оптимизация социальных сетей: Когда люди пытаются опубликовать свою ссылку на Facebook, Twitter и т. Д. Затем приятный предварительный просмотр появится на заголовке страницы, описание и изображение.
- Общий код с узлом Backend
- Пользователь-машина менее занята
- Лучше всего для статических сайтов
Серверный рендеринг;
- TTFB (время первого байта) медленнее; Ваш сервер должен провести некоторое время, чтобы подготовить HTML для вашей страницы вместо того, чтобы отправить почти пустой HTML Doc со ссылкой на JavaScript
- Сервер будет шире, может выполнить меньше запроса в секунду
- HTML DOC будет больше
- Страница выглядит раньше, но она не интерактивна и начало, пользователь должен ждать до тех пор, пока реакцию не будет сделано исполнение
- Полная страница перезагрузить после маршрутов изменять
Пример страницы
Сделать сравнение этих двух методов, давайте будем использовать очень простой веб-сайт с одним изображением.
Клиентский рендеринг – код примера
BELED Вы можете проверить пример HTML, обслуживаемый пользователю в приложении Ract Application (React-App). Как вы видите, пока нет изображения, только просто HTML с подключенными файлами JS.
React App
Серверный рендеринг – код примера
BELED Вы можете проверить наш пример на веб-сайт Next.js. Как видите, главное отличие в том, что у нас уже есть HTML с изображением, готовым к отображению.
Home
Представление
Чтобы понять номенклатуру всех графиков ниже, я буду использовать это изображение как объяснение, благодаря Google: https://developers.google.com/web/fundamentals/performance/user-centric-permance-metrics#User-centric_performance_metrics
CSR Performance
- Симулированный медленный 4G, 4x CPU замедление
- Нет дросселя
SSR Performance
- Симулированный медленный 4G, 4x CPU замедление
- Нет дросселя
Выводы
- Оба приложения становятся видимым и взаимодействием через 1-1,5 секунды, в этом простом примере SSR SSR немного быстрее
- В пользователе Server-Rindering пользователь получит HTML намного быстрее, чем на лицевой стороне клиента
- В клиент-боковом рендеринге не содержится, пока браузер не будет загружать все файлы JS
- Содержание DOM загружено намного быстрее в SSR, чем в CSR; В клиентском боковом рендеринге вы должны ждать, чтобы скачать JS
- Первая кончанная краска также быстрее на SSR
- Пустая страница намного дольше на гораздо дольше на стороне на стороне клиента, как разработчик, который вы должны избегать его использования некоторого погрузчика или Загрузка экрана
- Изображение быстрее доступно с SSR по сравнению с CSR, потому что при использовании CSR изображения не могут быть загружены перед подключенными файлами JS, HTML не готов,
Что я должен использовать?
Если вы хотите создать сайт, который в основном статичен (блог, портфолио, страница посадки), использование GATSBY , это не SSR, но он предварительно отображает сайт в HTML в течение времени сборки
Если вы хотите создать веб-приложение с реагированием, и вы заботитесь о SEO, более простым оптимизации социальных сетей и быстрее рендеринга для пользователя, вы должны подумать о SSR и Framework, как next.js
Если вы строите спа (приложение для одной страницы), и вы не хотите настроить все на стороне сервера, как: I18N, маршрутизатор E.T.C. Вы должны использовать Create-raction-app
Первоначально опубликовано Jakub Klimek в блоге AltaLogy
Оригинал: “https://dev.to/dcedrych/client-side-rendering-versus-server-side-rendering-13e”