`
masterkey
  • 浏览: 329407 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

squid 与 apache针对不同数据缓存情况的差异

阅读更多
对于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的缓存功能.

无论采用何种方式的缓存,结合大家应用的差异各自的特点.选择合适自己的缓存方案方式就好.
4
3
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics