对于Web应用,我们通常采用数据压缩和数据缓存等不同方式对Web应用进行性能优化,web 缓存数据的命中率至关重要,如何提高命中率是我
们对于Web应用性能优化的一个重要手段。
下面我们做一个实验,针对一个url (静态页面文件) 不同请求方式。
我们采用的版本:
Server: Apache/2.2.4 (Unix)
Squid Cache: Version 2.6.STABLE9
以一个静态页面为例.
http://172.17.12.101/docs/toc.html
apache 未配置压缩方式
1.apache 未配置压缩方式,非支持压缩方式请求:
curl http://172.17.12.101/docs/toc.html
缓存目录:
find -type f | xargs file
./_/f/U/4/i/Kql5DT29yMyNzOm2w.header: DBase 3 data file (500937590 records)
./_/f/U/4/i/Kql5DT29yMyNzOm2w.data: HTML document text
2.apache 配置支持压缩方式,非压缩方式请求:
curl http://172.17.12.101/docs/toc.html
缓存目录:
find . -type f | xargs file
./_/f/U/4/i/Kql5DT29yMyNzOm2w.header: DBase 3 data file (500937590 records)
./_/f/U/4/i/Kql5DT29yMyNzOm2w.data: HTML document text
./_/f/U/4/i/Kql5DT29yMyNzOm2w.header.vary/9/r/d/u/o/qtsQ0rRCylw13nsjQ.header: X11 SNF font data, LSB first
./_/f/U/4/i/Kql5DT29yMyNzOm2w.header.vary/9/r/d/u/o/qtsQ0rRCylw13nsjQ.data: HTML document text
3.apache 配置支持压缩方式,压缩方式请求:
curl -H 'Accept-Encoding: gzip, deflate' http://172.17.12.101/docs/toc.html
我们再看一下缓存目录:
find . -type f | xargs file
./_/f/U/4/i/Kql5DT29yMyNzOm2w.header: DBase 3 data file (500937590 records)
./_/f/U/4/i/Kql5DT29yMyNzOm2w.data: HTML document text
./_/f/U/4/i/Kql5DT29yMyNzOm2w.header.vary/9/r/d/u/o/qtsQ0rRCylw13nsjQ.header: X11 SNF font data, LSB first
./_/f/U/4/i/Kql5DT29yMyNzOm2w.header.vary/9/r/d/u/o/qtsQ0rRCylw13nsjQ.data: HTML document text
./_/f/U/4/i/Kql5DT29yMyNzOm2w.header.vary/l/6/8/t/1/CX1DLP7MQGK6qVYgw.header: X11 SNF font data, LSB first
./_/f/U/4/i/Kql5DT29yMyNzOm2w.header.vary/l/6/8/t/1/CX1DLP7MQGK6qVYgw.data: gzip compressed data, from Unix
是不是很神奇,赫赫对于同一个URL的get请求,不同情况下会产生多份不同的Cache数据,html格式,gzip格式的。
Vary header的存在会产生不同的缓存数据。再根据Content-Encoding的差异,生成不同的cache数据。为什么产生同一个多个Cache的多个备份情况呢?主要是为了使用不同browser的各自的情况,针对是否支持压缩数据请求,可以有选择性的返回压缩数据或非压缩数据。
下面我们在比较一下Squid缓存的试验。
1.非支持压缩请求
curl http://172.17.12.114:81/docs/toc.html
缓存目录
find -type f | xargs ls -l
-rw-r----- 1 nobody nobody 454 5月 5 13:13 ./00/00/0000000B
-rw-r----- 1 nobody nobody 7970 5月 5 13:13 ./00/00/0000000C
-rw-r----- 1 nobody nobody 1508 5月 5 13:13 ./swap.state
2.支持压缩请求
curl -H 'Accept-Encoding: gzip, deflate' http://172.17.12.114:81/docs/toc.html
缓存目录
find -type f | xargs ls -l
-rw-r----- 1 nobody nobody 454 5月 5 13:16 ./00/00/0000000D
-rw-r----- 1 nobody nobody 2656 5月 5 13:16 ./00/00/0000000E
-rw-r----- 1 nobody nobody 1716 5月 5 13:16 ./swap.state
采用squid作为前端缓存服务器,对同一个URL只保留一份缓存。对于如果不同browser(是否支持压缩)如果频繁交替访问,那么squid缓存数据就要频繁更新,也就无法有效提高自身缓存数据的命中率,当然,现实环境中不支持压缩的browser毕竟是很少的情况,所以对于缓存命中率的降低很有限.
squid 的缓存机制在这方面就没有apache的缓存机制的健壮。但是apache 的缓存方式会占用较多磁盘空间。squid所提供的功能远强大于apache的缓存功能.
无论采用何种方式的缓存,结合大家应用的差异各自的特点.选择合适自己的缓存方案方式就好.
分享到:
相关推荐
suqid 缓存服务器整理的相关内容,可以参考的。适合于centos7系统的
文档为squid缓存服务的配置文档,系统为CentOS部署,本人自己部署成功后整理的文档,绝对清晰。
squid缓存网站数据教程.zip
web缓存技术,cache Squid 配置 安装
nginx+apache+mysql+php+memcached+squid搭建门户网站
Squid是一个高性能的代理缓冲服务器,也许你已经用过Windows平台下的WinGate,MS Proxy Server等功能类似的产品。Squid是一个应用级代理,在保证客户端主机和服务器主机网络连通后,需要客户端软件做相应的设置后...
清理squid缓存,直接执行sh 脚本名,不过还需要知道要清理的squid服务器列表和需要清理的url列表
squid缓存服务器的配置,一般运营商所使用的代理服务器
squid for windows 2.7 以上版本
NULL 博文链接:https://baobeituping.iteye.com/blog/1331539
主要介绍了在varnish、squid、apache、nginx中选出一个更好的缓存服务器,需要的朋友可以参考下
Squid是一个缓存internet数据的一个软件,它接收用户的下载申请,并自动处理所下载的数据。也就是说,当一个用户想要下载一个主页时,它向Squid发出一个申请,要Squid替它下载,然后Squid 连接所申请网站并请求该...
squid:Squid Web代理缓存
利用Linux和Squid建立缓存代理服务器的优化方案研究.pdf
squid会根据用户请求网页的URL进行哈希,生成缓存文件,存放在某一个目录中。squid启动之后,将在内存中建立一个哈希表,记录硬盘中缓存文件配置的情形。 对于类似http://jb51.net/index.html之类的网页,squid只会...
Squid缓存代理服务器的安装与配置(普通代理 透明代理 反向代理)
web 缓存技术squid ,chm格式,英文文档
Squid有广泛的用途,从作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度,到为一组人共享网络资源而缓存万维网,域名系统和其他网络搜索,到通过过滤流量帮助网络安全,到局域网通过代理上网。...