2014-06-30 43 views
0

我的应用的结构方式是,当您访问www.example.com时,您将被重定向到www.example.com/home。所以,这意味着我在主域中只有一个文件将用户重定向到/ home。使用光油为主域提供服务/ home缓存

我意识到,Varnish正在缓存www.example.com/home,所以当我访问www.example.com时,它并没有为我提供缓存页面。我使用www.example.com/home对Blitz进行了压力测试,并且效果很好。它可以轻松处理300个并发用户。但是当我测试www.example.com时,它会在前几秒中断,这意味着它没有提供缓存页面。这是预期的,因为清漆不知道我想要服务/家庭。

所以,我尝试了几种方法来“告诉”清漆服务/主页访问时,但我不能正确地得到它。

我试图使用“regsub”和“set req.http.host”的规则作为一个波纹管,但无法按我需要的方式工作。如果有人能指出我正确的方向,我将非常感激。

sub vcl_recv { 

if (req.http.host == "example.com") { 
       set req.http.host = "example.com"; 
       set req.url = regsub(req.url, "", "/home"); 
     } 

} 

谢谢!

回答

0

我终于找到了正确的代码来解决这个问题:

if (req.http.host ~ "^" && req.url~ "/$") { 
    set req.http.host = "^"; 
    set req.url = regsub(req.url, "/$", "/home"); 
}