CentOS 5.8下Varnish-2.1.5的安装配置
RedHat脚本改用CentOS源更新安装Nginx、PHP 5.3、Varnish
Linux下Varnish缓存的配置优化
四、Varnish的工作流程图
Varnish处理请求流程大致可以分为如下几个步骤:
(1)、首先当请求到达时,接受vcl_recv函数的检查,在这个函数中,可以执行pass、pipe、lookup、error操作。
(2)如果在vcl_recv函数执行lookup操作,则会在缓存中查看是否有该缓存对象。如果有,则表示缓存命中,则在接受vcl_hit函数的检查。在该函数下可以将缓存对象直接返回给客户端,即执行deliver操作。也可以不使用本地缓存对象,从后端服务器获取请求对象,即执行pass操作。如果本地没有该缓存对象,则表示缓存丢失,则会接受vcl_miss函数检查。该函数会从后端服务器获取最新资源,即将会执行pass或fetch操作。
(3)如果在vcl_recv函数执行pass操作,则表示不再本地缓存查找,直接从后端服务器进行获取,即将会接受vcl_pass函数的检查。
(4)如果在vcl_recv函数处执行pipe操作,则表示不再本地缓存中查找,并且客户端和后端服务器建立管道,后续客户端的keep-alive连接中的请求数据传输将在管道中进行,并且请求数据接受vcl_pipe函数的检查。直到数据传输完成时关闭该管道连接。
(5)当需要从后端服务器获取资源或数据时,需要调用vcl_fetch函数,并且根据某种条件判断该数据或资源是否缓存在本地,即执行deliver操作;或者直接将该资源返回给客户端,不缓存在本地,即执行hit_for_pass操作
最后,不管是从本地缓存中响应的数据还是从后端原始服务器获取到的数据返回给客户端都需要调用vcl_deliver函数来完成。