对于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的缓存功能.
无论采用何种方式的缓存,结合大家应用的差异各自的特点.选择合适自己的缓存方案方式就好.
分享到:
相关推荐
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有多种缓存选项。缓存能够减少...
Apache可以使用内置的缓存模块或Squid代理进行页面缓存。在应用层,可以利用Memory Cache等内存缓存系统,或者编程语言内置的缓存机制(如Java的Pear Cache,PHP的Memcached)。缓存可以减少数据库访问,显著提升...
5. **镜像**:通过在不同网络或地区建立镜像站点,可以解决网络接入差异带来的访问速度问题,同时增强数据安全性。镜像站点可以通过定时或实时同步来保持数据一致。 6. **负载均衡**:负载均衡技术是解决高并发访问...
- Apache自带的缓存模块或第三方模块如Squid,用于缓存页面或部分页面元素。 - 有助于减少服务器重复处理相同请求,提高响应速度。 - **程序级缓存**: - 使用MemoryCache等工具,可以在应用程序层面实现数据缓存...
Apache的缓存模块、Squid代理缓存以及编程语言自身的缓存机制(如Java的Memory Cache)都能提高响应速度。分布式缓存如Redis和Memcached则更适用于大规模的场景。 5. **镜像**:通过在不同网络和地区创建镜像站点,...
服务器端的缓存可以采用Apache缓存模块、Squid等,通过缓存技术减少对后端数据库的访问,从而提高响应速度。而在应用开发层面,MemoryCache、Pear Cache模块、Java缓存方案等提供了丰富的缓存机制,帮助开发者管理...
- 缓存是提升性能的关键,Apache有自己的缓存模块,也可以借助Squid等外部缓存服务。 - 程序开发中,内存缓存如Linux的Memory Cache或语言特定的缓存库(Java的MemoryCache,PHP的Pear Cache)可以减少数据库访问...
5. **镜像**:为了应对不同网络环境下的访问速度差异,大型网站会创建镜像站点,以实时或定时更新数据。这包括教育网内的镜像以优化ChinaNet和EduNet用户的速度体验。Linux上的rsync等工具可以实现低成本的镜像同步...
4. **缓存**:缓存是提升网站性能的常见工具,包括在Apache中使用缓存模块或Squid代理,以及在Web开发中利用Memory Cache等接口。各种编程语言如Java、PHP和.NET都有自己的缓存模块,用于存储和共享数据,减少数据库...
- **Squid**:高性能缓存服务器,加速静态内容加载。 #### 应用服务器(中间件) - **IIS**:微软出品,只支持Windows平台。 - **WebSphere**:IBM的高端应用服务器,跨平台。 - **WebLogic**:功能强大,由Oracle...
6. **CPU占用过高问题**:针对w3wp进程CPU占用100%的情况,通常通过性能监视器、IIS日志分析、内存 dump 分析等手段定位问题网站。 7. **沪江理解**:沪江是一家互联网教育平台,理解其业务模式、用户群体和对技术...
- **解析**: Ping 命令用于测试网络连通性,在不同操作系统下虽然语法可能略有差异,但核心功能是一致的。 ### 22. Squid 代理服务器的默认端口 - **知识点**: Squid 代理服务器的默认端口是 3128。 - **解析**: ...
由国内著名技术社区联合推荐的2012年IT技术力作:《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》,即将上架发行,此书从Web应用、数据备份与恢复、网络存储应用、运维监控与性能优化、集群高级应用等...
### 64位与32位的主要差异 - **地址空间**:64位系统可以访问更大的地址空间,理论上可以达到18EB,而32位系统最大只能访问4GB。 - **性能**:64位系统处理大数据时更高效。 - **兼容性**:64位系统向下兼容32位...
Apache的缓存模块和Squid代理缓存可以增强服务器性能。在开发中,利用Memory Cache进行数据缓存和共享,以及使用各种编程语言内置的缓存机制(如Java的缓存库、PHP的Pear Cache),能进一步提升效率。 5. **镜像...
35. **Squid、Varnish、Nginx对比**:Squid主要用于缓存,Varnish专注静态内容加速,Nginx多功能,兼顾反向代理和负载均衡。 36. **nginx处理HTTP请求流程**:接收请求、解析请求、查找匹配的location、处理请求、...