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ヘッダーにうまくセットできているのが確認できた

