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秒
![](/img/my/wx.png)
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Ubuntu系统下lnmp环境的搭建
LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。 Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、gentoo等。 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器 Mysql是一个小型关系型数据库管理系统。 PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。 这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。 (一)首先需要安装一个Ubuntu系统,我是在虚拟机上安装的,过程非常简单 安装好后就可以在系统上装nginx、mysql、php了。 我们先要配置系统的网卡,让他可以上网,并设置他的DNS root@bogon:~#vim/etc/network/interfaces root@bogon:~#vim/etc/resolv.conf 然后重启网卡,Ubuntu和centos重启网卡的命令并不相同 root@bogon:~#ifdowneth0&&am...
- 下一篇
DBA必知的mysql备份与还原的几大方法
博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持!一、mysqldump备份结合binlog日志恢复 说明:MySQL备份一般采取全库备份加日志备份的方式,例如每天执行一次全备份,每小时执行一次二进制日志备份。这样在MySQL故障后可以使用全备份和日志备份将数据恢复到最后一个二进制日志备份前的任意位置或时间。 1、binlog介绍 1)该日志记录着数据库的所有增、删、改的操作日志,还包括这些操作的执行时间。 Binlog功能默认是关闭的,没有开启。 查看binlog,用mysqlbinlog -v mysql-bin.000001 Binlog的用途:1:主从同步 2:恢复数据库 开启binary log功能:通过编辑my.cnf中的log-bin选项可以开启二进制日志;形式如右:log-bin[=DIR/[filename]] ,注释:每次重启mysql服务或运行mysql> flush logs;都会生成一个新的二进制日志文件,这些日志文件的number会不断地递增,除...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS6,7,8上安装Nginx,支持https2.0的开启