WebサービスのエッジにhtmlをキャッシュするためにFastlyを導入している
前回の続きで、そのFastlyのVCLを使ってABテストを行いたい
VCLでやりたいこと
- A/Bパターンをランダムで振り分ける
- 振り分けたパラメータをヘッダに載せてset-cookieする
- ABパターンのVaryヘッダに載せる
#in recv if (!req.http.Cookie:TestParam) { if (randombool(50,100)) { set req.http.X-ABTest = "A"; } else { set req.http.X-ABTest = "B"; } } else { set req.http.X-ABTest = req.http.Cookie:TestParam; }
#in fetch if (beresp.http.Vary) { set beresp.http.Vary = beresp.http.Vary ", X-ABTest"; } else { set beresp.http.Vary = "X-ABTest"; }
#in deliver if (!req.http.Cookie:TestParam){ add resp.http.Set-Cookie = "TestParam=" req.http.X-ABTest + "; Expires=" + time.add(now, 24w) + "; Path=/;"; }
VCLを試す
VCL コードをテストする方法としてFiddleというFastly のエンジニアがベータ提供しているツールを使う
https://fiddle.fastlydemo.net/fiddle/58d09e3f
Cookieおよび、Varyヘッダーにうまくセットできているのが確認できた