UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Fastly】ABテストを考える

レスポンスの HTML をキャッシュしている環境でABテストを行いたい

ただ、何も考えずにオリジンサーバーで表示パターンを切り替えると、ABのどちらか 1 つが CDN Edge にキャッシュされてしまうので、キャッシュ期限が切れるまで固定化されてしまう

そこでCDN環境下でのテストを考える

参考にする記事はこちら zenn.dev

CSR による AB テストはやらない

SEOを重視しているため LCP (Largest Contentful Paint)の劣化は避けたい、かつ、なるべく高速に表示させたい

CSRの場合は、JavaScript が動くまでどちかのパターンを決めることができないのでこれらが損なわれる可能性がある

単一 URL に対して複数キャッシュを作る

特になにもしない場合のCDN環境では、単一URLに対して単一のキャッシュになってしまうのでABテストができない

そこで記事にあるように、Vary ヘッダーという HTTP ヘッダーを使えば、単一 URL に対して複数キャッシュを生成することを考える

幸いにもFastlyを使っているのでVary ヘッダーが使える

Vary - HTTP | MDN

Vary: <header-name>, <header-name>, ...

<header-name> にレスポンスを区別するリクエストヘッダー名を指定する

カスタムリクエストヘッダーを用意する

レスポンスを区別するカスタムリクエストヘッダーをつくる

記事を参考にするとFastlyで振り分けがよさそう

Fastlyでの振り分けにはVLCを使う

参考になるドキュメント

developer.fastly.com

実際のVLCは別日にまとめる

他参考

あわせて確認したいスライド https://speakerdeck.com/shqld/yamagoya2020