Implement prerendering w/ puppeteer

Implement prerendering w/ puppeteer

1bf676e4bd36a48bf616c82d6f52c83a?s=128

sota ohara

July 21, 2020
Tweet

Transcript

  1. Implement prerendering w/ puppeteer 2020.07.21 隅田川.js#2 Sota Ohara

  2. Sota Ohara Software Engineer at CADDi sottar_ sottar

  3. https://www.sottar.io/

  4. prerendering とは - Web 上でレンダリングをする方法の一つ - CSR, SSR などと並列 -

    各URLに対応する個別の HTML ファイルを事前に生成しておく - TTFB, FP, FCP, TTI の最適化 - エッジキャッシュを活用しやすい - 全ての有効なURLに対してHTMLを生成しておく必要がある - Gatsby, Next.js などでサポートされている
  5. https://developers.google.com/web/updates/2019/02/rendering-on-the-web

  6. puppeteer を使って実装した

  7. puppeteer とは - https://github.com/puppeteer/puppeteer - Headless Chrome Node.js API -

    ヘッドレス(GUIなし)で Chrome を制御できるライブラリ - react-snap や Gatsby の内部で使われている
  8. 登場人物 react, styled-components, puppeteer, webpack, express, MySQL, npm scripts

  9. Application npm run build ① npm run prerender ② bundle.js

    index.html npm-scripts
  10. OGP対応 - OGP タグは react-helmet を使う - OGP用の画像は puppeteer でスクリーンショットを撮ることができる

  11. styled-components のスタイルが取得できない - puppeteer を使ってページの HTML を取得する際に styled-components で当てて いるスタイルの情報が取得できなかった

    - パフォーマンス観点から CSSOM を直接読み込ませているので puppeteer で取得できない - styled-components v5 から導入された disableCSSOMInjection オプションを指定 することで回避
  12. page source Before After

  13. None
  14. We Are Hiring!! https://corp.caddi.jp/recruit/eng