Varnish 缓存

Centos 6.5  varnish

源码编译需要安装以下的依赖:

报错:
./autogen.sh
./autogen.sh: line 47: libtoolize: command not found
安装依赖:
 yum install libtool*
报错:
 configure: error: requires an X/Open-compatible Curses library
安装依赖:
 yum install ncurses-devel -y
报错:
 configure: error: neither libedit nor another readline compatible library found
安装依赖:
 yum install libedit-devel -y

rpm包安装所需的依赖:

1、安装varnish所需lib,

 rpm --nosignature -i http://repo.varnish-cache.org/redhat/varnish-4.0/el6/x86_64/varnish/varnish-libs-4.0.0-1.el6.x86_64.rpm

2、安装jemalloc,库文件可到此链接处下载:ftp-hk.tmapy.cz/fedora/epel/6/x86_64/jemalloc-3.6.0-1.el6.i686.rpm

rpm --nosignature -i http://ftp-hk.tmapy.cz/fedora/epel/6/x86_64/jemalloc-3.6.0-1.el6.x86_64.rpm

#可以去下载合适自己的varnish版本软件包

http://repo.varnish-cache.org/redhat/varnish-4.0/el6/x86_64/varnish/

3、开始安装,

rpm --nosignature -i http://repo.varnish-cache.org/redhat/varnish-4.0/el6/x86_64/varnish/varnish-4.0.0-1.el6.x86_64.rpm

安装完成后,启动varnish:

service varnish start

HTTP 请求的类型有几种,下面是主要的几种:

GET : 请求指定的页面信息,并返回实体主体。

HEAD: 只请求页面的首部。

POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。

pass和pipe都从后端服务器取数据,它们之间有什么不同呢?

答:当vcl_recv调用 pass 函数时,pass将当前请求直接转发到后端服务器。而后续的请求仍然

通过varnish处理。

例如,建立了HTTP连接之后,客户端顺序请求 a.css 、a.png两个文件,“当前请求”指的是第一个

请求,即a.css,a.css被直接转发到后端服务器,不被缓存。而后续的a.png则再由varnish来做

处理,varnish会判断a.png 如何处理。

总结:一个连接中除了当前请求,其它请求仍然按照正常情况由varnish处理。

而pipe模式则不一样,当vcl_recv判断 需要调用 pipe 函数时,varnish会在客户端和服务器之

间建立一条直接的连接 ,之后客户端的所有请求都直接发送给服务器,绕过varnish,不再由varnish

检查请求,直到连接断开。

Request

1、调用 pass 函数,从后端服务器调用数据。

2、调用 pipe 函数,建立客户端和后端服务器之间的直接连接,从后端服务器调用数据。

3、调用lookup函数,从缓存中查找应答数据并返回,如果查找不到,则调用pass函数从后端服务器

调用数据 。

varnish vcl配置文件:

vcl_recv 接受请求

vcl_hash 缓存策略

vcl_fetch 不缓存

vcl_hit 命中

vcl_miss 未命中

if (req.request !="GET" && req.request != "HEAD" && req.request != "PUT" && req.request != "POST" && req.request !="TRACE" && req.request != "OPTIONS" && req.request != "DELETE") {
return (pipe);
}

#如果不是get和head,那就是post。post属于发送数据给服务器,需要服务器接受数据并处理,属于动态。

if (req.request != "GET" && req.request != "HEAD") {
return (pass);
}

#认证信息

if (req.http.Authorization || req.http.Cookie) {
return (pass);
}
return (lookup);
hash_data(req.url);
if (req.http.host) {
hash_data(req.http.host);
} else {
hash_data(server.ip);
}
return (hash);

#sub vcl_deliver 返回引擎,客户端提示是否命中

sub vcl_deliver {
    if (obj.hits > 0) {
       set resp.http.X-Cache = "Hit"; 
    } else {
       set resp.http.X-Cache = "Miss";
    }
}

缓存时间的计算方法

缺省的缓存时间计算方法如下:

. 先根椐max-age确定缓存时间

看返回头中的Cache-Control头中,有没有指定s-maxage或max-age信息,另外,如果后端是一个缓存服务器,它还会指定一个age头,表明已经缓存过的时间,这样需要减去age头指定的时间,计算出对应的缓存时间。

例1 只有max-age,没有age

CacheControl: max-age=86400

缓存时间:86400秒,即一天

例2 同时有max-age和age信息

CacheControl: max-age=86400

Age: 6400

缓存时间:86400 - 6400 = 80000秒

时间: 2024-08-29 13:22:50

Varnish 缓存的相关文章

Varnish缓存机制详细介绍及简单配置

Varnish是一款高性能的开源HTTP加速器,其主要用来做为反向代理中的缓存服务器使用,但其实Varnish本身也是具有反向代理功能的,但在创建连接和维持连接上,与Nginx相比差距很大,现在有一个很流行的架构就是前端用Nginx作为反向代理,后面加Varnish缓存服务器为Web服务加速 在将Varnish前先谈谈我们的浏览器缓存机制,现在的浏览器基本都具有缓存功能,它能将我们以前访问过的静态内容和可进行缓存的动态内容缓存再本地,而后在下次访问相同资源时,如果可以确认Server端的资源未发

Varnish缓存代理简介与配置

一.varnish原理: 1)Varnish简介: varnish缓存是web应用加速器,同时也作为http反向缓存代理.你可以安装varnish在任何http的前端,同时配置它缓存内容.与传统的 squid 相比,varnish 具有性能更高.速度更快.管理更加方便等诸多优点.有一部分企业已经在生产环境中使用其作为旧版本的squid的替代方案,以在相同的服务器成本下提供更好的缓存效果,Varnish更是作为CDN缓存服务器的可选服务之一. 根据官网的介绍,Varnish的主要特性如下:http

varnish缓存服务

缓存的基础知识1.程序本身具有局部性时间局部性 过去访问到的数据,也有可能被两次访问 空间局部性 一个数据被访问到时,离它最近的文件可能马上也会被访问 2.命中率文档命中率 从文档个数进行衡量 字节命中率 从内容大小进行衡量 3.缓存系统的特性缓存对象 有生命周期,且是定期清理的 缓存空间耗尽 使用LRU(最近最少使用算法)或者MRU算法进行缓存项清理 不可缓存项 用户私有数据 4.缓存系统一般处理步骤接收请求解析请求 提取请求的URL及各种首部 查询缓存新鲜度检测创建响应报文发送响应报文记录日

Varnish 缓存加速

Varnish可以有效降低web服务器的负载,提升访问速度.按照HTTP协议的处理过程,web服务器接受请求并且返回处理结果,理想情况下服务器要在不做额外处理的情况下,立即返回结果,但实际情况并非如此. 当把Varnish部署上之后,web请求的处理过程会有一些变化.客户端的请求将首先被Varnish接受.Varnish将分析接收的请求,并将其转发到后端的web服务器上.后端的web服务器对请求进行常规的处理,并将依次将处理结果返回给Varnish. 但Varnish的功能并非仅限于此.Varn

varnish缓存代理的安装

二.安装varnish 1.安装依赖关系的软件包(注:使用centos在线yum源) [[email protected] ~]# yum -y install autoconfautomake libedit-devel libtool ncurses-devel pcre-devel pkgconfigpython-docutils python-sphinx 2.安装varnish Varnish的官方网址为http://varnish-cache.org,可以在这里下载最新版本的软件.

linux之搭建varnish缓存代理服务器

一.varnish原理: 1)Varnish简介: varnish缓存是web应用加速器,同时也作为http反向缓存代理.你可以安装varnish在任何http的前端,同时配置它缓存内容.与传统的 squid 相比,varnish 具有性能更高.速度更快.管理更加方便等诸多优点.有一部分企业已经在生产环境中使用其作为旧版本的squid的替代方案,以在相同的服务器成本下提供更好的缓存效果,Varnish更是作为CDN缓存服务器的可选服务之一. 根据官网的介绍,Varnish的主要特性如下:http

varnish缓存代理

1)Varnish简介: varnish缓存是web应用加速器,同时也作为http反向缓存代理.你可以安装varnish在任何http的前端,同时配置它缓存内容.与传统的 squid 相比,varnish具有性能更高.速度更快.管理更加方便等诸多优点.有一部分企业已经在生产环境中使用其作为旧版本的squid的替代方案,以在相同的服务器成本下提供更好的缓存效果,Varnish更是作为CDN缓存服务器的可选服务之一. 根据官网的介绍,Varnish的主要特性如下:https://www.varnis

Web架构:varnish缓存代理服务器超详细剖析

小生博客:http://xsboke.blog.51cto.com 小生 Q Q:1770058260 -------谢谢您的参考,如有疑问,欢迎交流 目录 varnishi简介 varnish配置组成 --------------------------------------  vcl内置预设变量 --------------------------------------  功能语句与对象 --------------------------------------  varnish中内置

varnish缓存系统基础知识

缓存系统类型 1.页面缓存/pageCache     缓存静态资源(html js css image)  例如:varnish    squid 2.数据缓存/dataCache      缓存应用程序在数据库中查询到的数据结果 例如:redis  memcache 缓存系统一般是key/value类型 缓存只是缓存读请求,写操作不能缓存.在hash表中查询有o(1)的查询效率,在30条数据和30万条数据中匹配一条数据的效率是一样的 衡量缓存命中率: 1.请求命中次数      2.命中的字

centos 7.5 部署varnish缓存服务器

博文大纲: 一.varnish简介 二.Varnish 如何工作 三.部署varnish缓存服务器 一.varnish简介 Varnish是高性能开源的反向代理服务器和HTTP缓存服务器,其功能与Squid服务器相似,都可以用来做HTTP缓存.可以安装 varnish 在任何web前端,同时配置它缓存内容.与传统的 squid 相比,varnish 具有性能更高.速度更快.管理更加方便等诸多优点.有一部分企业已经在生产环境中使用其作为旧版本的 squid的替代方案,以在相同的服务器成本下提供更好