缓存相关的基础
根据数据是否可以缓存
私有数据:一般为用户的私有数据,不能缓存
共有数据:这类数据为共有数据,大部分都可缓存
缓存有效性判断机制
过期时间
HTTP/1.0
Expires:过期时间
HTTP/1.1
Cache-Control:max-age=
Cache-Control: s-maxage=
条件式请求
Last-Modified/If-Modified-Since
Etag/If-None-Match
缓存层级:
私有缓存:用户代理的本地缓存机制,一般为浏览器自己的缓存
公共缓存:反向缓存:反向代理服务器的缓存功能,例如varnish,nginx,squid
请求报文用于通知缓存服务ruhr使用缓存响应请求
Cache-request-directive =
"no-cache":不要用缓存回应
“max-age”:缓存有效时长
“max-stale”:联系不到后端服务器时,使用过期缓存的最大时长
“min-fresh”:最小的缓存更新时长
响应报文用于通知缓存服务如何存储上级服务器响应的内容
Cache-response-directive =
"public":公共数据可以缓存
“private”:只缓存私有数据
“no-cache”:可缓存,但响应给客户端之前需要revalidation
“no-cache”:不允许储存响应内容与缓存中
Varnish
varnish的结构
程序架构
1)Manager进程
2)Cacher进程
包含多种类型的线程:storahe,worker,Log/Stats,…..
3)shared memory log,共享内存日志
主要包含:varnishlog,varnishncsa,varnishstat。。。。
4)配置接口:VCL(varnish configuration language)
它将vcl格式的文件编译为共享对象文件
varnish程序包
varnish在epel源中,
#yum info varnish
安装后的文件
/etc/varnish.varnish.params:配置varnish服务进程的工具特性,例如监听的地址和端口,缓存机制
/etc/varnish/default.vcl:配置各Child/Cache线程的缓存工作属性
主程序
/usr/sbin/varnishd
CLI interface:
/usr/bin/varnishadm
Shared memory Log交互工具
/usr/bin/varnishhist
/usr/bin/varnishlog
/usr/bin/varnishncsa
/usr/bin/varnishstat
/usr/bin/varnishtop
测试工具程序
/usr/bin/varnishtest
VCL配置文件重载程序
/usr/sbin/varish_reload_vcl
Systemd Unit File:
/usr/lib/systemd/system/varnishlog.service
/usr/lib/systemd/system/varnish.service
varnish服务
/usr/lib/systemd/system/varnishncsa.service
日志持久的服务;
varnish的缓存存储机制( Storage Types):
-s [name=]type[,options]
· malloc[,size]
内存存储,[,size]用于定义空间大小;重启后所有缓存项失效;
· file[,path[,size[,granularity]]]
文件存储,黑盒;重启后所有缓存项失效;
· persistent,path,size
文件存储,黑盒;重启后所有缓存项有效;实验;
变量的使用作用域
对安装wordpress的nginx和varnish测试
网络拓扑
使用工具ab的测试结果
nginx没使用用缓存可每秒可处理400请求,在使用缓存后在450~550
varnish的测试结果为每秒可处理650~700个请求