构建高性能的web站点学习笔记六------反向代理缓存

Web代理服务器的职责是:用来接收浏览器发送的请求,并将请求转发给真正的web服务器(其实就是存放请求资源的web服务器),然后接收web服务器返回来的内容并交给浏览器。

传统代理

代理服务器以前通常用来访问互联网的web站点,现在的浏览器也都有设置代理服务器的选项,包括QQ了飞信之类的,只要局域网中有一台机子可以连外网,局域网中的计算机都可以使用它作为代理服务器进行上网,当然这需要一些配置,配置问题不是我们今天讨论的内容,有兴趣同学可以自己配置一下

反向代理

“反向”,为什么叫做反向代理呢?

我们先分析一下传统代理,局域网中的计算机通过代理服务器访问web服务器,假如局域网中有20台机器都用该代理,那么对于web服务器来说都是同一台主机发送过来的请求,这样局域网中用户计算机对web服务器是透明的代理服务器是在客户端

反向代理服务器呢?我们看一下反向代理服务器的工作流程,

只有传统代理: (浏览器<---->传统代理服务器(在客户端哦))<----->web服务器      注我用括号括起来代表他们是一家的,<----->代表二者可以互相传输数据。

只有反向代理: 浏览器<---->(反向代理服务器(在服务器端)<----->web服务器   )

既有反向代理也有传统代理 : (浏览器<---->传统代理服务器)<---->(反向代理服务器<----->web服务器   )  我们通常将后者web服务器成为后端服务器

上面看来 反向代理服务器对用户浏览器透明,代理服务器在服务器端,有web站点的所有者负责配置或找人配置

 

由上面描述如果使用反向代理,我们知道用户浏览器首先访问的代理服务器,真正的数据放在后端的web服务器中,这样的话代理服务器就可以将web服务器反馈的数据给缓存起来,这样用户就下次请求的时候就不用再想web服务器端生成数据了,我们一般以apache,Ngix等作为后端web服务器,代理服务器一般使用Varnish,关于反向代理服务器的配置,这里就不在详述。

反向代理缓存是否可以取代web服务器的动态内容缓存?

这要根据具体情况了,加入你发现他们二者的工作内容相同,那么你可以完全替换掉web动态内容缓存,但是下面几种情况完全可以让两者和睦相处,形成多级缓存。

 例如:如果我们站点访问量特别大,我们可能引入多台代理服务器(负载均衡的内容,没了解过的可以看一下我的关于负载均衡的笔记),则每台代理服务器第一次被请求或者缓存过期,都需要向web服务器获取数据,如果web服务器中有动态内容缓存,很好直接就返回了,否则就需要重新计算,假如我们的代理服务器较多,那么web服务器会重复这样的工作,如果我们使用动态内容缓存,那么性能提高一定很可观。

 

更多信息请查看 http://www.javady.com/index.php/category/thread

猜你喜欢

转载自bk-lin.iteye.com/blog/1493847
今日推荐