客户端缓存和服务器缓存 缓存服务器配置
背景
今天在技术讨论中,提到SQUID,所以好学的我就进行了一些学习,这里将我的一些想法分享给大家。
一、什么是缓存代理服务器?
1.1、代理服务器
直白的将,就是您作为客户端要发送一次请求,正常的是请求服务端,但是有了代理服务器后,您可以先将请求发送给代理服务器再由代理服务器发送给服务端。
1、代理服务器有哪些优点?
安全:服务端不知道真正的客户端是谁,可以有效保护客户端的安全。
tips:反向代理就是在服务端加一层代理,来保护服务端。
突破限制:突破自身客户端的限制,例如访问国外服务器、高校内部网站等。
1.2、缓存代理服务器
在代理服务器的基础上增加了代理缓存的功能,可以存储或缓存Server的资源,当Client尝试访问此资源时,代理服务器上如果有此资源的最新副本,则立即交付给用户。可以提高流量速度并减少外部Internet连接的流量。
二、常用代理服务器
2.1、SQUID
功能全面、架构老旧、性能一般。基于Unix的代理服务器,也能在Windows机上运行,支持缓存多种不同的网络对象。免费开源软件。
2.2、Nginx cache
Nginx的一个缓存模块,用了插件可以做做这个副业,不是特别的专业,性能可以达到Varnish的水准。
2.3、Varnish
内存缓存,速度一流,但是缓存也限制了容量,本身的技术优势高于SQUID,采用了Visual Page Cache技术。
2.4、ATS
Apache Traffic Server,简称ATS,是一个高性能的,模块化的HTTP代理和缓存服务器。
2.5、HAProxy
使用C语言便携的自由及开源软件,提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。
2.6、对比
下面的表格来自《Apache Traffic Server HTTP Proxy Server on the Edge》
概念含义Work Threads多线程Multi-process多进程Event-driven事件驱动Plugin APIs插件Forward proxy正向代理Reverse proxy反向代理Transp. proxy透明代理Load Balancer负载均衡Cache缓存ESI(Edge Side Inclue)边缘缓冲技术ICP(Internet Cache protocol)和父缓存对应,同级缓存交互Keep-Alive保持长链接SSL(Secure Socket Layer)安全套接层Pipeline管道这个部分,涉及到了一个概念,Edge一词,直译为‘边缘’,这个‘边缘’代表什么含义呢?
我们可以把整个网络想像成一张网,客户端可以必做一个蜘蛛,当我们想要在互联网中获取猎物(资源)的时候,网络边缘的资源获取效率要比网络中心的资源要高。如下图,Client想通过代理访问Server,链路1的效率就会远远高于链路2,边缘这个词就是能在一个网络中找到更靠近Client的服务边缘,来提高请求效率。
根据Edge又衍生出了很多的组合概念,例如边缘网络,边缘计算单元,边缘存储,边缘缓存,边缘DNS...
下面的图片来自 INFOQ,大家也可以根据自己的需求选择所需要的代理服务器