lecher
2015-03-24 10:35:14 +08:00
这个还要看命中率的问题,就缓存处理效果来说
varnish可配置的参数非常多,纯内存处理非常快,用来做rest接口的反代非常好用,但是如果命中率太低热点数据不集中,会出现内存被挤满但是处理很慢的情况,因为内存满之后会反复清理掉数据,去后端重新获取数据。不适合做大数据缓存,比如图片请求处理的缓存,此外就是没有持久缓存磁盘的策略,重启服务之后需要做数据预热处理,才能上线使用,不然后端容易被请求堆满,有雪崩效应的风险。做纯反代
squid内存处理比varnish弱一些,但是优势在于本地存储策略可以配置的空间很大,用来做长时间不会变动的请求比较方便,比如静态html页面,图片。但是对于带参数请求的处理没有varnish的策略好,清理缓存的策略不太方便,用超时触发向后端确认请求是否失效的策略,需要设置时间的长度很微妙,需要根据实际情况去调整。重启服务只需要读取本地数据就能完成大部分数据的预热是优势。
nginx很轻量,基本功能就是反代,需要使用其它功能需安装扩展插件,缓存策略很弱,更新需要手动清理缓存,否则只能等超时重新缓存。
如果只有vps,建议nginx处理足矣,在请求量小内存也不是特别大的时候,nginx完全够用,varnish对内存需求太大,只做纯反代不缓存略显浪费。