14
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Linkbal(リンクバル)Advent Calendar 2022

Day 9

SSR - Server Side Renderingのメリットとアーキテクチャについて調べてみます。

Last updated at Posted at 2022-12-08

SSRについて簡単に説明

SSRという技術用語はServer Side Renderingの省略です。SSRは、サーバー側でHTML、CSSレンダリングを行うことを特徴としてます。

ユーザーのブラウザから、特定なページURLへ遷移するたびサーバー側にリクエストを受け取り、そのままサーバー側でAPIと連携をして、APIのレスポンスデーターと組み合わせて、HTMLレンダリングが行われます。生成されたHTMLをブラウザに返すことになります。

SSRはNext.js、Nuxt.js等のフレームワークを使うことで比較的手軽に実装することができます。

SSRのアーキテクチャ

SSRを利用しているサイトでブラウザーのリクエストがどのように実行されているかは、下記の図で理解できます。

SSR diagram.drawio (3).png

  1. ブラウザーがURLページのリクエストを送信。
  2. サーバー側はAPI連携でデーターを取得。
  3. サーバーがデーターを所得してから、希望なデーターを含むレンダリングHTMLを生成。
  4. ブラウザーに非インタラクティブなHTMLファイルにをす。
  5. ブラウザに届きた非インタラクティブなページが表示される
  6. ブラウザーがHTMLに置いてるJavaScriptファイルをロードする
  7. ブラウザがフレームワークを実行ページがインタラクティブになる

8と9の処理はJavascriptの処理でSPA(Single Page Application)と同じです。例えば、ボタンを押すときなどに、ブラウザー側Javascript処理が行われて、データ取得と再レンダリングを回すことになっています。

SSRのメリット

SEO対策

Google 検索エンジンはページの読み込み速度により、優先的に検索順位を与えるようになってます。
読み込み速度が早くなるとユーザーのセッション時間やサイトの直帰率なども改善されます。

SSRが導入されるサイトに対して、Google クローラーがページリクエストすると、レンダリング済みHTMLがすぐに返されることで、ページ全体にインデックスされることになります。

ユーザーエクスペリエンスが向上

サーバー側でレンダリングされたアーキテクチャのお陰で、CSR(Clinet Side Renderingの省略)より、SSRを利用するサイトはページの読み込みが速くなり、ユーザーエクスペリエンスが向上するはずです。

さらに、SSR はユーザーのネットワーク環境・デバイスのスペックに依存されないため、安定的な配信を提供できます。(レンダリング処理をサーバー側で行う)

ページキャッシュが最適化

SSR を行うことで、サーバーサイドでレンダリングされた結果(HTML/JS)をキャッシュさせる事ができます。

Cloud Front などの CDN を利用することで、オリジンサーバの代わりにコンテンツを配信することができ、表示速度などのパフォーマンスを向上できます。

ただ、キャッシュを利用する場合はどのタイミングでキャッシュを削除するかなどのキャッシュ戦略について検討が必要です。

参考した記事

14
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?