如何利用光油进行A / Btesting和function展示?

今天,我们有我们的networking层暴露在世界上。 我们希望在我们的Web层前添加Varnish以加速网站并减less对后端的呼叫。 但是,我们有一些担忧,我想知道大多数人如何接近他们:

  1. A / Btesting – 如何testing每个页面的两个“版本”并进行比较? 我的意思是,清漆如何知道哪个页面提供服务? 如果和如何保存每个页面上的单独版本?

  2. function部署 – 您将如何设置一个简单的function部署机制? 比方说,我想打开一个新的function/页面只是10%的stream量,然后再增加到20%?

  3. 你如何处理代码部署? 您是否在每个部署中清除整个清漆caching? (我们每天部署)。 或者你只是让它慢慢过期(使用TTL)?

任何有关这些问题的想法和例子, 非常感谢!

A / Btesting – 如何testing每个页面的两个“版本”并进行比较? 我的意思是,清漆如何知道哪个页面提供服务? 如果和如何保存每个页面上的单独版本?

你有几个select:

  • 只需将其展示在不同的url上。
  • 绕过特定url的caching。 你可以passvcl_recv返回pass来做到这一点。 像这样的东西:

     sub vcl_recv { if (req.url ~ "^/path/to/document") { return (pass); } } 
  • 在公开新版本时显式清除caching。

function部署 – 您将如何设置一个简单的function部署机制? 比方说,我想打开一个新的function/页面只是10%的stream量,然后再增加到20%?

我不确定有一个“简单”的方法来做到这一点。 既然你可以把任意的C代码放在你的.vcl文件中,你可能会添加一些逻辑来select一个随机数,然后根据结果select合适的后端path。

你如何处理代码部署? 您是否在每个部署中清除整个清漆caching? (我们每天部署)。 或者你只是让它慢慢过期(使用TTL)?

对于重大更改,我们只是清除caching,对于较小的更改,我们只是让事情过期。