1. Squid

一种很古老的反向代理软件,拥有传统代理、身份验证、流量管理等高级功能,但是配置太复杂。

它算是目前互联网应用得最多的反向缓存代理服务器,工作于各大古老的cdn上。

 

2. Varnish

一个新兴的软件,设计简单,基于内存缓存,重启后数据将消失。

更符合目前互联网的应用,很多公司都采用了varnish这个软件,

比如米扑科技:http://mimvp.com

 

3. nginx

nginx的反向代理缓存是通过一个缓存模块proxy_cache来实现的,

目前这个模块还在完善中,但是很多公司已经开始使用了。

 

varnish,squid,apache,nginx这几种缓存技术用什么架构cache

1、从这些功能上

varnish和squid是专业的cache服务,而apache,nginx这些都是第三方模块完成。

2、cache选择

要做cache服务的话,我们肯定是要选择专业的cache服务,优先选择squid和varnish。

varnish 本身的技术上优势要高于squid,它采用了“Visual Page Cache”技术,在内存的利用上,Varnish比Squid具有优势,它避免了Squid频繁在内存、磁盘中交换文件,性能要比Squid高。 但是varnish不能cache到本地硬盘上的。

varnish有强大的通过Varnish管理端口,可以使用正则表达式快速、批量地清除部分缓存

squid的优势在于完整的庞大的cache技术资料,和很多的应用生产环境(这应该与squid早出来有关)。

3、 nginx缓存

nginx是用第三方模块ncache做的缓冲,其性能基本达到varnish,但在架构中nginx一般作为反向(静态文件现在用 nginx的很多,并发能支持到2万+)。

在静态架构中,如果前端直接面对的是cdn或者前端了4层负载的话,完全用nginx的cache就够了。

4、本人觉得如果是在apache服务上提升性能,做一些本地cache是完全可以的,但如果在系统架构中用apache做cache服务,那就有点牛头不对马尾了。

 

测试结果发现:

varnish > nginx > apache > squid

这个结果,或许跟大家预期的结果有点出入,因为squid做老牌文件缓存工具怎么会这么差呢,squid的命中率低,原因用Varnish作者的一句话来说明:

Varnish 的作者Poul-Henning Kamp是FreeBSD的内核开发者之一,他认为现在的计算机比起1975年已经复杂许多。

在1975年时,储存媒介只有两种:内存与硬盘。

但现在计算机系统的内存除了主存外,还包括了CPU内的L1、L2,甚至有L3快取;硬盘上也有自己的快取装置,

因此Squid Cache自行处理物件替换的架构不可能得知这些情况而做到最佳化,但操作系统可以得知这些情况,所以这部份的工作应该交给操作系统处理,这就是 Varnish cache设计架构。

 

 

参考推荐

使用Varnish代替Squid做网站缓存加速器的详细解决方案

用Varnish和Memcached缓存给WordPress网站提速-内存级加速