Varnish简介
场景1
同一时间有多个需求和项目,在本地有多
个分支。经常需要切换分支来进行不同需
求的开发。
场景2
开始开发时,在merge文件中去掉文件后面
的-min,在ci前再把-min加上去。
场景3
许多人同时开发一个项目。需要其中一人
先ci到分支,另一人up才能看到效果。不能
实时的看到修改结果
我的解决方案——Varnish
Varnish介绍

Varnish,是一套高效能的反向网站快取服务器(reverse
proxy server)。
挪威最大的在线报纸 Verdens Gang 使用3台Varnish代替了
原来的12台Squid,性能比以前更好。



https://www.varnish-cache.org/
Varnish配置
 Varnish有一个很棒的配置系统,大部分其
 他的系统使用配置指令,让您打开或者关
 闭一些开关。Varnish使用配置语言,这种
 语言叫做“VCL”(varnish configuration
 language),在启动varnish时,varnish就把
 VCL编译成二进制代码。
状态图
https://www.varnish-cache.org/trac/wiki/VCLExampleDefault



backend default {
   .host = "127.0.0.1";
   .port = "8080";
}

sub vcl_recv {
   return(pass);
}
状态图
https://www.varnish-cache.org/trac/wiki/VCLExampleDefault



backend default {
   .host = "127.0.0.1";
   .port = "8080";
}

sub vcl_recv {
   return(pass);
}
127.0.0.1
用户请求   varnish   修改后的请求   :8000
例1 一个人有多个分支
if(req.url~ "/app/platform/purchase"){
     set req.url = "/style2"req.url;
     set req.http.X-Server = "Path-style2";
     return (pass);
}
if(req.url~ "mainiframe/inside"){
     set req.url = "/style0"req.url;
     set req.http.X-Server = "style0";
     return (pass);
}
目录结构,D:workspace




Apach配置

Listen 8000
DocumentRoot "D:/workspace"
例2 自动去掉-min
if((req.url!~ "(fdev|alitalk|get)-min.")&&(req.url!~
"/(fdev-v3|yui|)/")){
     set req.url = regsub(req.url,"-min.",".");
}
例3 多人合作开发
backend default {
  .host = "127.0.0.1";
  .port = "8000";
}
backend prerelease{
    .host = "172.22.35.70";
    .port = "80";
}
backend shijiali{
    .host = "10.19.6.13";
    .port = "80";
}
if(req.url~ "/vas/hub/"){
     set req.backend = shijiali;
     set req.http.X-Server = "Server-shijiali";
     return (pass);
}
if(req.url~ "mainiframe/inside"){
     set req.url = "/style0"req.url;
     set req.http.X-Server = "style0";
     return (pass);
}
set req.backend = prerelease;
set req.http.X-Server = "Server-prerelease";
return (pass);
127.0.0.1:8000



             127.0.0.1
             :8000
varnish
           10.19.6.13:80




          172.22.35.70:80
其他小应用
简化版




                                  完整版

<esi:include src=“basic-esi.php?type=1”
mce_src=“basic-esi.php?type=1”/>
Basic-esi.php
sub vcl_fetch {
 if(req.url~ "post_offer_(lite|new).htm"){
     esi;
 }

    return (deliver);
}

Varnish简介