`
masterkey
  • 浏览: 335229 次
  • 性别: 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
分享到:
评论

相关推荐

    java高并发处理方法

    1. **架构层面的缓存**:Apache自身提供了缓存模块,例如`mod_cache`,以及第三方的Squid缓存代理。通过缓存静态资源和部分动态内容,可以显著提升响应速度。 2. **应用程序层面的缓存**:在开发过程中,开发者...

    大型网站性能优化的通用方法(附图)

    4. **缓存机制**:缓存是提升性能的关键,包括Apache模块缓存、Squid缓存以及内存缓存(如Linux的Memory Cache)。在Web开发中,不同语言如Java、PHP都有内置或第三方的缓存库,用于存储和共享数据,减少数据库访问...

    高并发网站架构设计方案

    Apache的缓存模块或Squid可以增强服务器响应。在开发层面,Linux的Memory Cache常用于数据缓存,Java、PHP和其他编程语言都有各自的缓存模块。例如,Pear的Cache模块用于PHP,Java有多种缓存选项。缓存能够减少...

    大型WEB站点架构设计文档.pdf

    Apache可以使用内置的缓存模块或Squid代理进行页面缓存。在应用层,可以利用Memory Cache等内存缓存系统,或者编程语言内置的缓存机制(如Java的Pear Cache,PHP的Memcached)。缓存可以减少数据库访问,显著提升...

    网站架构(页面静态化,图片服务器分离)

    5. **镜像**:通过在不同网络或地区建立镜像站点,可以解决网络接入差异带来的访问速度问题,同时增强数据安全性。镜像站点可以通过定时或实时同步来保持数据一致。 6. **负载均衡**:负载均衡技术是解决高并发访问...

    大型门户网站网站架构……

    - Apache自带的缓存模块或第三方模块如Squid,用于缓存页面或部分页面元素。 - 有助于减少服务器重复处理相同请求,提高响应速度。 - **程序级缓存**: - 使用MemoryCache等工具,可以在应用程序层面实现数据缓存...

    负载均衡必须要考虑的八个方案三终版.pdf

    Apache的缓存模块、Squid代理缓存以及编程语言自身的缓存机制(如Java的Memory Cache)都能提高响应速度。分布式缓存如Redis和Memcached则更适用于大规模的场景。 5. **镜像**:通过在不同网络和地区创建镜像站点,...

    大型WEB网站架构深入分析.pdf

    服务器端的缓存可以采用Apache缓存模块、Squid等,通过缓存技术减少对后端数据库的访问,从而提高响应速度。而在应用开发层面,MemoryCache、Pear Cache模块、Java缓存方案等提供了丰富的缓存机制,帮助开发者管理...

    大型web系统系列--1

    - 缓存是提升性能的关键,Apache有自己的缓存模块,也可以借助Squid等外部缓存服务。 - 程序开发中,内存缓存如Linux的Memory Cache或语言特定的缓存库(Java的MemoryCache,PHP的Pear Cache)可以减少数据库访问...

    网站架构深入分析

    5. **镜像**:为了应对不同网络环境下的访问速度差异,大型网站会创建镜像站点,以实时或定时更新数据。这包括教育网内的镜像以优化ChinaNet和EduNet用户的速度体验。Linux上的rsync等工具可以实现低成本的镜像同步...

    高并发网站架构设计方案[文].pdf

    4. **缓存**:缓存是提升网站性能的常见工具,包括在Apache中使用缓存模块或Squid代理,以及在Web开发中利用Memory Cache等接口。各种编程语言如Java、PHP和.NET都有自己的缓存模块,用于存储和共享数据,减少数据库...

    上海Linux运维工程师-面试题-个人总结).pdf

    6. **CPU占用过高问题**:针对w3wp进程CPU占用100%的情况,通常通过性能监视器、IIS日志分析、内存 dump 分析等手段定位问题网站。 7. **沪江理解**:沪江是一家互联网教育平台,理解其业务模式、用户群体和对技术...

    网络基础试题100例(附答案)

    - **解析**: Ping 命令用于测试网络连通性,在不同操作系统下虽然语法可能略有差异,但核心功能是一致的。 ### 22. Squid 代理服务器的默认端口 - **知识点**: Squid 代理服务器的默认端口是 3128。 - **解析**: ...

    集群好书《高性能Linux服务器构建实战》 试读章节下载

    由国内著名技术社区联合推荐的2012年IT技术力作:《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》,即将上架发行,此书从Web应用、数据备份与恢复、网络存储应用、运维监控与性能优化、集群高级应用等...

    IT系统工程师面试题

    ### 64位与32位的主要差异 - **地址空间**:64位系统可以访问更大的地址空间,理论上可以达到18EB,而32位系统最大只能访问4GB。 - **性能**:64位系统处理大数据时更高效。 - **兼容性**:64位系统向下兼容32位...

    大型网站设计注意事项大全

    Apache的缓存模块和Squid代理缓存可以增强服务器性能。在开发中,利用Memory Cache进行数据缓存和共享,以及使用各种编程语言内置的缓存机制(如Java的缓存库、PHP的Pear Cache),能进一步提升效率。 5. **镜像...

    运维142问不看一定后悔

    35. **Squid、Varnish、Nginx对比**:Squid主要用于缓存,Varnish专注静态内容加速,Nginx多功能,兼顾反向代理和负载均衡。 36. **nginx处理HTTP请求流程**:接收请求、解析请求、查找匹配的location、处理请求、...

Global site tag (gtag.js) - Google Analytics