2020-05-02 Dynamic Rendering を試してみる
Dynamic Rendering とは
UserAgent がクローラーな場合に html をレンダリングしてからレスポンスを返すことにより、JS を実行しないクローラーに対して正しいコンテンツを読み込ませる技術
SSR との比較
Dynamic Rendering はヘッドレスブラウザなどを用いてレンダリングすることが多い
最終的には SSR にするのが良いらしい
SSR 実装難しくない?
選択肢
prerender.io
Rendertron
rendora
試してみた
prerender
prerender-node
express の middleware
リクエストを見て prerender の対象なら PRERENDER_SERVICE_URL にリクエストを投げる君
prerender
prerender を行う service
nginx を使う場合
prerender を自前ホスティングしているサンプル
bot 経由だと <div id="app"></div> が <div id="app">poyo</div> になっていることがわかる
所感
prerender を自前ホスティングできるのは良さそう
prerender-node で express の middleware としてリクエストの振り分けをしているけど、実際は CDN でやりたいので自前で用意する必要ありそう
prerender-node と prerender の型定義がなかった...
Rendertron
Rendertron
本体
puppeteer を使って実装されている
/render/ 以下に URL を渡すとレンダリングされた html が返ってくる
rendertron.initialize() を実行すると取りあえず動く
Rendertron is also compatible with prerender.io middleware. Note: the user agent lists differ there.
互換性がある
rendertron-middleware
prerender-node と同じような役割を持つ middleware
web サーバは node じゃなくて nginx で用意してみた
所感
prerender とほとんど変わらない気がした
メンテされている感じするし、GoogleChrome 配下だし、TS 製だしで、こっっちの方が良さそう