微型机与应用
MICROCOMPUTER & ITS APPLICATIONS
2000 Vol.19 No.3 P.11-13



WWW代理技术现状与改进方案
吴冬升 谷天翔
　　摘　要：客户机Cache技术、WWW上的代理技术、公共Cache技术,指出了它们各自的局限性。提出了一种改进方案――WWW本地代理的公共Cache和辅助代理相结合的解决方案。
　　关键词：WWW环球网 客户机Cache 公共Cache HTTP协议 辅助代理
　　WWW环球网是基于超文本的信息查询系统和信息发布工具,为用户提供了友好的信息查询界面。它的出现推动了Internet的发展。然而,分析在WWW上传输的数据,发现其中很多是冗余的。例如:某教研室1台工作站的多个用户都想取得Netscape的最新版本,在这种情况下,这些用户各自去取1个Netscape的拷贝,而实际上这个教研室只须由工作站取1次就可以了。这些数据的重复传输浪费了许多网络带宽,使网络速度越来越慢,而且使服务器的负荷加重。为了解决这些问题,现在采用的一般技术是客户机Cache技术和WWW代理的公共Cache技术。下面对二者作一介绍。
1 客户机Cache技术和WWW代理的公共Cache技术
1.1 客户机Cache技术
　　这里以Netscape浏览器为例来说明客户机Cache技术的使用,在Netscape的菜单Option中选Network Preferences,点击Cache页,可以看到其中的Memory Cache和Disk Cache项的设置,缺省值分别为600KB和10MB。也就是说在本地机上开辟了1个内存区（Memory Cache）和1个磁盘区（Disk Cache）作为数据传送的缓冲区,可以暂存以前调用过的资料。其中内存区用于本次入网所调用的数据资料的暂存,从Internet上传过来的每一页面,相应地在内存缓冲区给予保存1个备份。硬盘缓冲区则用于保存前几次入网所调用的资料页面。只要硬盘区开辟得足够大,将可以保存前几个星期甚至前几个月曾调用过的数据资料。这样,可以大大节省从Internet上传输的数据量。
　　在Cache页面还有Verify Documents的设置情况,3个选项分别为:Once per Session、Every Time及Never。当选择Once per Session的设置时,Netscape将发送1个信息给所调用页面的Web服务器,查问资料是否有改变,如有改变,则传送1个新的拷贝,如无改变,则从硬盘缓冲区直接调用。本次入网只校验1次,如再调用则不再校验,而是直接调用内存或硬盘缓冲区的备份。Every Time选项则每次调用该资料,无论资料是否改变,都要进行校验。Never选项不对调用资料校验,只要硬盘上有,则直接调用。
　　采用客户机技术解决了单个用户查询数据的浪费问题,但这些Cache并不被共享,每个客户机都有自己的Cache,同一数据可能被放在不同的Cache中,显然这种方案并未从根本上解决问题。
1.2 WWW代理的公共Cache技术
　　为了解决上述问题,有人提出了WWW代理的公共Cache技术。图1为原理图。

图1 WWW代理的公共Cache技术
　　这种技术的思想是:客户机想访问Internet时,首先与WWW代理服务器建立连接,当WWW客户机请求的数据在Cache时,代理服务器根据一定的规则判断是将该数据直接返回给客户机还是向远端服务器请求。如果不在Cache中,代理服务器则向远端WWW服务器请求该数据,在将数据返回给客户机的同时,按一定规则决定是否将数据放在Cache中。
　　代理既是1个WWW服务器,又是1个WWW客户方。当代理接受WWW浏览器的请求时,它是1个服务器;当代理与1个WWW服务器相连请求其数据时,它是1个客户方。从客户方向服务器发出的请求由WWW代理完成,它充分利用了WWW代理机速度的高效性,可以很快地完成查询的任务,并将结果返回给客户机。
　　采用WWW代理的公共Cache技术存在下面一些问题。WWW代理的公共Cache技术对于客户方用户较少的情况比较好,但当用户过多时客户方在主机上存储信息过多,主机负担太重,同时对磁盘空间的要求也太高,直接导致了系统性能下降;另一个问题是该系统对一些信息不能存放,例如由网关执行生成的动态数据等,而随着JAVA语言和VRML等新技术的兴起,将有更多的动态数据生成。针对这些问题,本文提出一种改进的方案,即WWW本地代理的公共Cache和辅助代理相结合的解决方案。
2 WWW本地代理的公共Cache和辅助代理相结合的解决方案
　　该系统设计主要有3个方面:即WWW代理模块的设计,Cache管理模块的设计,辅助代理管理模块的设计。下面具体介绍3部分的设计情况。
2.1 WWW代理模块的设计
　　1.WWW代理模块的原理图如图2所示。

图2 WWW代理模块的原理图
　　2.WWW代理在浏览器与服务器间的作用。
　　一般的WWW浏览器除了支持HTTP协议外,同时还支持FTP、Gother、WAIS、NNTP等协议,为了简化WWW浏览器与代理之间的接口,在WWW浏览器与代理之间将只使用HTTP协议。当用户请求1个其它协议目标时,WWW浏览器首先向代理发出1个HTTP请求,由代理送出1个其它协议的请求到相应的服务器上去,同时代理还要将服务器返回的目标翻译成HTTP的目标,再送给客户机的WWW浏览器。
　　3.代理向Cache和辅助代理写入数据
　　当代理从远端WWW服务器中接受数据时,要根据接受到的数据情况,决定哪些数据放在Cache中,哪些放在辅助代理中,哪些应该舍弃。
　　（1）一般说来,在由GET方法下请求的HTTP协议的数据应该存在Cache中,因为其在Internet通信量中占很大的比重,同时该协议也比较容易获得关于数据的信息;
　　（2）对HTTP协议中由POST等方法获得的数据,或在HTTP响应头中有Authorization行的数据存放到辅助代理中;
　　（3）对HTTP协议中包含JAVA和VRML等技术的动态数据信息也将保存到辅助代理中去;
　　（4）FTP协议的数据应该放入辅助代理中,因为FTP数据缓冲比较困难,不适宜放在Cache中,而且FTP数据信息比较难获得,所以存到辅助代理中;
　　（5）gopher数据不存放,因为gopher数据的缓冲并不重要且不像HTTP和FTP那样流行,同时gopher不允许client获取有关的文件信息;
　　（6）NNTP协议的数据不放入Cache中,因为USENET的分布式系统已经实现了大范围的数据交换;
　　（7）WAIS和其它数据库查询结果放到辅助代理中;
　　（8）当主代理的Cache空间满时按一定的规则将其中的数据存放到Cache中。
　　4.代理从Cache和辅助代理中读数据
　　每当WWW浏览器向代理发出请求时,代理必须首先检查数据是否已经在Cache或辅助代理中,当数据已经在Cache或辅助代理中时,它要决定是否把数据直接返回给WWW的client端,这时有2种情况:
　　（1）代理不负责对Cache和辅助代理中数据的管理和更新,Cache和辅助代理中数据的管理和更新由另外的模块负责。代理认为所有在Cache和辅助代理中的数据都有效,且最新,把Cache和辅助代理中的数据直接返回给客户方;
　　（2）代理负责对Cache和辅助代理中的数据的管理和更新,当要求的数据在Cache和辅助代理中时,代理首先确定该数据是否为最新。为此,代理送出1个If-Modified-Since的请求到WWW服务器,如果服务器上数据未更新,代理才将Cache和辅助代理中数据返回给客户方。
　　上述2种方法都有一定的缺陷。第一种方法中,代理不负责Cache和辅助代理中数据的更新,可以减少代理的负担,使得代理比较简单,同时Cache和辅助代理中的数据直接送client端,缩短了客户端的响应时间。但是,由于代理对Cache和辅助代理中的数据缺乏了解,当管理和更新Cache和辅助代理的模块出现问题时,代理返回给客户的数据可能不是最新的。
　　在第二种方法中,对于已经放到Cache和辅助代理中的数据,每次都要送出1个If-Modified-Since的请求到WWW服务器。但是在Internet上建立1条TCP连接将花费不少的时间。对于较小的数据,建立连接的时间远大于数据传送的时间,同时不断地建立TCP连接将增加WWW服务器的负担。另外,DNS的查找是十分费时的工作。
　　因此,上面2种方法都不太理想,理想的方法是对Cache和辅助代理中的每个数据都建立1个失效日期,在到达失效日期前,代理认为数据是最新的,采用第一种方法,将数据直接返回给客户方;在到达失效日期后,代理将不能保证Cache中的数据是最新的,采用第二种方法。这种方法既能保证返回给客户方的数据是最新的,又能减少用户的响应时间。代理从Cache和辅助代理读数据的流程图如图3所示。

图3 代理从Cache和辅助代理中读数据的流程图
　　如何设定不同数据的失效时间,是一个关键问题。这里设定Cache数据失效时间短一些,而辅助代理数据失效时间相对长一些。数据失效时间可以通过配置文件来设置,也可以通过一定的算法来确定。失效时间的建立对本系统的性能影响很大。
2.2 Cache管理模块的设计
　　Cache管理模块算法如下:
　　　if（freedisk<k） then
　　　　　　day=Cache中数据的最长保留时间
　　　　　　while（freedisk<k） and （day>1） do
　　　　　　　　将recenty==day的文件转移到辅助代理上
　　　　　　　　day=day-1
　　　　　　　　end while
　　　　　　　　if day==1 then
　　　　　　　　　　while （freedisk<k） do
　　　　　　　　　　　将最大的文件转移到辅助代理上
　　　　　　　　　　end while
　　　　　　end if
　　　end if
　　Cache管理模块的主要功能是对Cache系统的磁盘空间进行监督,当其剩余空间freedisk少于某门限k时,将存在价值小的数据删除,删除的原则可采用把近期最久未删除的数据及时删去,同时将数据文件的大小作为一个低优先级的参数给予考虑。
2.3 辅助代理管理模块的设计
　　辅助代理管理模块的设计思想仿照上面Cache管理模块的设计,算法如下:
　　　　if（freedisk<k） then
　　　　　　　day=辅助代理中数据的最长保留时间
　　　　　　　while（freedisk<k） and （day>1） do
　　　　　　　　　将recenty==day的文件删除
　　　　　　　　　day=day-1
　　　　　　　end while
　　　　　　　if day==1 then
　　　　　　　　　while（freedisk<k） do
　　　　　　　　　　　将最大的文件删除
　　　　　　　　　end while
　　　　　　　end if
　　　　end if
　　当然,还可以综合考虑到对于特定系统,某些信息会被经常访问到,可将这些信息的优先级提高。例如,对于一所大学来说,其它高校的信息可能经常被访问到,可以将这些信息的优先级提高,尽量保存长一些时间。
3 总 结
　　采用本文提出的WWW本地代理的公共Cache和辅助代理相结合的解决方案,可以减少文件在网上的重复传输,大大减轻了网络服务器的负担,降低了网络带宽的浪费,最终方便了用户。
吴冬升（合肥工业大学预测与发展研究所230009）
谷天翔（合肥工业大学预测与发展研究所230009）
参考文献
1，Berners-Lee T.Hypertext transfer protocol.Internet Engineering Text Force Working Draft,1993;(11)
2，Glassman S.A caching relay for the world wide web. in Proceeding of First International WWW Confeence,1994;(5)
3，陈良洲,鲍璐,张根度.公共Cache在WWW中的应用.计算机工程与应用,1997;(7)
4，赖庆.利用Netscape快速查阅Internet资源.中国计算机用户,1996;(10)
收稿日期：1999-09-19
