专利名称:一种代理服务器主动压缩方法及代理服务器的制作方法
技术领域:
本发明涉及数据压缩技术,特别是指一种代理服务器主动压缩方法及代理服务器。
背景技术:
在移动互联网的环境下,用户终端(如手机,平板电脑,3G上网卡等)与骨干网络之间的传输延时通常较大,而较大的网络延时会造成用户上网速度慢,影响用户体验。在短期内无法解决传输延时的情况下,如果能将传输内容进行无损压缩,也将给用户上网速度带来很大的提升。 浏览器(如IE、chrome、firefox等)在超文本传送协议(如httpl. I协议)下,对于网页等内容,代理服务器通常会请求普通的数据压缩(如gzip压缩);而如果网站不支持该压缩方式,就会导致无法响应压缩请求的问题;进而导致用户传输数据量的增大,浪费带宽。
发明内容
有鉴于此,本发明的目的在于提出一种代理服务器主动压缩方法及代理服务器,很大程度地改善了网速。基于上述目的本发明提供的一种代理服务器主动压缩方法,包括从网站接收数据;判断是否正在接收响应头;若是正在接收响应头,则将接收到的数据作为响应头暂存,并判断响应头是否接收完;若响应头未接收完,则继续从网站接收数据;若响应头已接收完,则判断响应头是否包括分块传输编码指令,若响应头不包括分块传输编码指令,则强制将响应头置为分块传输编码操作,并在响应头中添加实体编码指令,并将数据保存到压缩缓存并发往客户端;若响应头包括分块传输编码指令,则将数据保存到压缩缓存并发往客户端;若不是正在接收响应头,则对本块响应体的数据进行压缩,并将数据保存到压缩缓存并发往客户端;根据响应头中的全部响应体长度或分块传输编码操作标志判断全部响应体是否接收完成,若是,则关闭连接并结束;若否,则继续从网站接收数据。在一个实施例中,所述后续处理步骤还包括在关闭连接并结束前,对压缩缓存进行刷新操作。在另一个实施例中,所述判断响应头是否接收完的步骤包括判断是否接收到2个特殊标识符,若是,则认为响应头已接收完。在另一个实施例中,所述特殊标识符为\r\n。本发明还提供了一种代理服务器,包括接收模块,用于从网站接收数据,并判断数据是否为响应头;若是正在接收响应头,则将接收到的数据作为响应头暂存,并判断响应头是否接收完;若响应头未接收完,则所述接收模块继续从网站接收数据;若响应头已接收完,则将数据发往响应头处理模块;响应头处理模块,用于判断响应头是否包括分块传输编码指令,若响应头不包括分块传输编码指令,则强制将响应头置为分块传输编码操作,并在响应头中添加实体编码指令,然后将数据发往发送模块;若响应头包括分块传输编码,则直接将数据发往发送模块;压缩模块,用于对本块响应体的数据进行压缩,然后将数据发往发送模块;发送模块,用于将数据保存到压缩缓存并发往客户端,并且根据响应头中的全部响应体长度或分块传输编码操作标志判断全部响 应体是否接收完成,若是,则关闭连接并结束;若否,则所述接收模块继续从网站接收数据。在一个实施例中,所述发送模块还用于在关闭连接并结束前,对压缩缓存进行刷新操作。从上面所述可以看出,本发明提供的一种代理服务器主动压缩方法及代理服务器,通过代理服务器在从网站下载数据的时候,同时对数据进行压缩,大大节省了带宽;并且所述代理服务器在压缩缓存中保存压缩后的数据,以后每次客户请求该压缩数据的时候,可以非常快速地从压缩缓存中调用并直接给出,减小了 CPU的消耗;并且很大程度地改善了网速。
图I为本发明提出的一种代理服务器主动压缩方法实施例I的流程图;图2为本发明提出的一种代理服务器主动压缩方法实施例2的流程图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。参考图1,为本发明提出的一种代理服务器主动压缩方法实施例I的流程图。根据附图I所示实施例流程图,本发明所提供的一种代理服务器主动压缩方法,包括步骤101 :开始;步骤102 :从网站接收数据;步骤103 :判断是否正在接收响应头(header);步骤104 :若是正在接收响应头(header),则将接收到的数据作为响应头(header)暂存;步骤105 :判断响应头(header)是否接收完;若响应头(header)未接收完,则继续跳到步骤102 ;步骤106 :若响应头(header)已接收完,则判断响应头是否包括分块传输编码指令(Chunked);若响应头包括分块传输编码指令(Chunked),则跳到步骤110 ;步骤107 :若响应头不包括分块传输编码指令(Chunked),则强制将响应头置为分块传输编码操作(Chunked);
步骤108 :在响应头中添加实体编码指令(Content-Encoding: gzip),并跳到步骤110 ;步骤109 :若不是正在接收响应头(header),则对本块响应体(body)的数据进行压缩;步骤110 :将数据保存到压缩缓存(cache)并发往客户端;步骤111 :根据响应头(header)中的全部响应体(body)长度或分块传输编码操作(Chunked)标志判断全部响应体(body)是否接收完成;若否,则跳到步骤102 ;步骤112 :若是,则关闭连接并结束压缩。上述方法中所述的响应头(header),是服务器以超文本传送协议(HTTP协议)传送超文本标记语言(HTML)到浏览器前所送出的字符串,在超级文本预处理语言(PHP)送回 超文本标记语言前,需先传完所有的响应头数据。上述方法中所述的响应体(body),是用在网页中的一种超文本标记语言标签,表示网页的主体部分,也就是用户可以看到的内容,可以包含文本、图片、音频、视频等各种内容。上述方法中所述的分块传输编码(Chunked-Chunked transfer encoding)是
超文本传输协议(HTTP )中的一种数据传输机制,允许超文本传输协议由网页服务器发送给客户端应用(通常是网页浏览器)的数据可以分成多个部分;使用分块传输编码,数据分解成一系列数据块,并以一个或多个块发送,这样服务器可以发送数据而不需要预先知道发送内容的总大小。在服务器以超文本传送协议(HTTP协议)传送超文本标记语言(HTML)到浏览器的过程中,整个响应中分为响应头(header)和响应体(body),全部响应体(body)数据接收完成的判断方法包括方法I :响应头(header)里包括实体长度指令(Content-Length),则全部响应体(body)的长度为实体长度指令(Content-Length)中所表示的长度,接受完该长度的数据后即结束。方法2:响应头(header)里包括分块传输编码指令(Transfer-Encoding:Chunked),当遇到一个长度为0的一块响应体(Chunk),贝U表示全部响应体(body)数据接收完成。从上述实施例I可以看出,本发明提供的一种代理服务器主动压缩方法,通过代理服务器在从网站下载数据的时候,同时对数据进行压缩,大大节省了带宽;并且所述代理服务器在压缩缓存中保存压缩后的数据,以后每次客户请求该压缩数据的时候,可以非常快速地从压缩缓存中调用并直接给出,在节约带宽的同时还减小了 CPU的消耗;并且很大程度地改善了网速。参考图2,为本发明提出的一种代理服务器主动压缩方法实施例2的流程图。步骤201:开始;步骤202 :从网站接收数据;步骤203 :判断是否正在接收响应头(header);步骤204 :若是正在接收响应头(header),则将接收到的数据作为响应头(header)暂存;
步骤205 :判断是否收到2个特殊标识符,若否则跳到步骤202 ;步骤206 :若是,则认为响应头(header)已接收完;步骤207 :判断响应头是否包括分块传输编码指令(Chunked);步骤208 :若响应头不包括分块传输编码指令(Chunked),则根据响应头(header)得到全部响应体(body)的长度;步骤209 :强制将响应头置为 分块传输编码操作(Chunked);步骤210 :在响应头中添加实体编码指令(Content-Encoding: gzip),并跳到步骤213 ;步骤211 :若是,则得知该响应是分块传输编码(Chunked),则跳到步骤213 ;步骤212 :若不是正在接收响应头(header),则对本块响应体(body)的数据进行压缩;步骤213 :将数据保存到压缩缓存(cache)并发往客户端;步骤214 :根据响应头(header)中的全部响应体(body)长度或分块传输编码操作(Chunked)标志判断全部响应体(body)是否接收完成,若否,则跳到步骤202 ;步骤215 :若是,则对压缩缓存进行刷新操作;步骤216 :关闭连接并结束压缩。从上述实施例2可以看出,本发明提供的一种代理服务器主动压缩方法,通过代理服务器在从网站下载数据的时候,同时对数据进行压缩,大大节省了带宽;并且所述代理服务器在压缩缓存中保存压缩后的数据,以后每次客户请求该压缩数据的时候,可以非常快速地从压缩缓存中调用并直接给出,在节约带宽的同时还减小了 CPU的消耗;并且进一步的,在关闭连接并结束前,对压缩缓存进行刷新操作,可使得压缩过程更加流畅;并且很大程度地改善了网速。在服务器以超文本传送协议(HTTP协议)传送超文本标记语言(HTML)到浏览器的过程中,整个响应中分为响应头(header)和响应体(body)。响应头(header)的结束是2个\r\n,这是http协议的规定(S卩只要检测到2个\r\n,表示http头接收完。)因此,优选所述特殊标识符为\r\n。本领域技术人员应当知道,当服务器采用超文本传送协议(HTTP协议)时,所述的特殊标识符为\r\n,但在其他传送协议中,该特殊标识符可能会发生变化,因此,不应当将特殊标识符\r\n作为限定本发明的技术特征。这里必须要特别说明,上述两个实施例均为代理服务器以超文本传送协议(HTTP协议)传送超文本标记语言(HTML)到浏览器的具体实施方式
,但基于本发明构思的在其他协议下传送数据的类似主动压缩方法也应当属于本发明的保护范围。本发明还提供了一种代理服务器,其包括接收模块,用于从网站接收数据,并判断数据是否为响应头;若是正在接收响应头,则将接收到的数据作为响应头暂存,并判断响应头是否接收完;若响应头未接收完,则所述接收模块继续从网站接收数据;若响应头已接收完,则将数据发往响应头处理模块;响应头处理模块,用于判断响应头是否包括分块传输编码指令,若响应头不包括分块传输编码指令,则强制将响应头置为分块传输编码操作,并在响应头中添加实体编码指令,然后将数据发往发送模块;若响应头包括分块传输编码,则直接将数据发往发送模块;压缩模块,用于对本块响应体的数据进行压缩,然后将数据发往发送模块;发送模块,用于将数据保存到压缩缓存并发往客户端,并且根据响应头中的全部响应体长度或分块传输编码操作标志判断全部响应体是否接收完成,若是,则关闭连接并结束;若否,则所述接收模块继续从网站接收数据。优选的,所述发送模块还用于在关闭连接并结束压缩前,对压缩缓存进行刷新操作。从上述可以看出,本发明提供的一种代理服务器,通过代理服务器在从网站下载数据的时候,同时对数据进行压缩,大大节省了带宽;并且所述代理服务器在压缩缓存中保存压缩后的数据,以后每次客户请求该压缩数据的时候,可以非常快速地从压缩缓存中调用并直接给出,在节约带宽的同时还减小了 CPU的消耗;并且进一步的,在关闭连接并结束 前,对压缩缓存进行刷新操作,可使得压缩过程更加流畅;并且很大程度地改善了网速。这里必须要特别说明,上述实施例为代理服务器以超文本传送协议(HTTP协议)传送超文本标记语言(HTML)到浏览器的具体实施方式
,但基于本发明构思的在其他协议下传送数据的类似代理服务器也应当属于本发明的保护范围。所属领域的普通技术人员应当理解以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种代理服务器主动压缩方法,其特征在于,包括 从网站接收数据; 判断是否正在接收响应头; 若是正在接收响应头,则将接收到的数据作为响应头暂存,并判断响应头是否接收完;若响应头未接收完,则继续从网站接收数据;若响应头已接收完,则判断响应头是否包括分块传输编码指令,若响应头不包括分块传输编码指令,则强制将响应头置为分块传输编码fe作,并在响应头中添加实体编码指令,并将数据保存到压缩缓存并发往客户%5 ;右响应头包括分块传输编码指令,则将数据保存到压缩缓存并发往客户端; 若不是正在接收响应头,则对本块响应体的数据进行压缩,并将数据保存到压缩缓存并发往客户端; 根据响应头中的全部响应体长度或分块传输编码操作标志判断全部响应体是否接收完成,若是,则关闭连接并结束;若否,则继续从网站接收数据。
2.根据权利要求I所述的一种代理服务器主动压缩方法,其特征在于,所述后续处理步骤还包括 在关闭连接并结束前,对压缩缓存进行刷新操作。
3.根据权利要求I或2所述的一种代理服务器主动压缩方法,其特征在于,所述判断响应头是否接收完的步骤包括 判断是否接收到2个特殊标识符,若是,则认为响应头已接收完。
4.根据权利要求3所述的一种代理服务器主动压缩方法,其特征在于,所述特殊标识符为\r\n。
5.一种代理服务器,其特征在于,包括 接收模块,用于从网站接收数据,并判断数据是否为响应头;若是正在接收响应头,则将接收到的数据作为响应头暂存,并判断响应头是否接收完;若响应头未接收完,则所述接收模块继续从网站接收数据;若响应头已接收完,则将数据发往响应头处理模块; 响应头处理模块,用于判断响应头是否包括分块传输编码指令,若响应头不包括分块传输编码指令,则强制将响应头置为分块传输编码操作,并在响应头中添加实体编码指令,然后将数据发往发送模块;若响应头包括分块传输编码,则直接将数据发往发送模块; 压缩模块,用于对本块响应体的数据进行压缩,然后将数据发往发送模块; 发送模块,用于将数据保存到压缩缓存并发往客户端,并且根据响应头中的全部响应体长度或分块传输编码操作标志判断全部响应体是否接收完成,若是,则关闭连接并结束;若否,则所述接收模块继续从网站接收数据。
6.根据权利要求5所述的一种代理服务器,其特征在于,所述发送模块还用于在关闭连接并结束前,对压缩缓存进行刷新操作。
全文摘要
本发明公开了一种代理服务器主动压缩方法,包括从网站接收数据;判断是否正在接收响应头;若是,则将接收到的数据作为响应头暂存,并判断响应头是否接收完;若否,则继续从网站接收数据;若是,则判断响应头是否包括分块传输编码指令,若否,则强制将响应头置为分块传输编码操作,并在响应头中添加实体编码指令,并将数据保存到压缩缓存并发往客户端;若否,则将数据保存到压缩缓存并发往客户端;若否,则对本块响应体的数据进行压缩,并将数据保存到压缩缓存并发往客户端;根据响应头中的全部响应体长度或分块传输编码操作标志判断全部响应体是否接收完成,若是则关闭连接并结束;若否则继续从网站接收数据;本发明还公开了一种代理服务器。
文档编号H04L29/08GK102752320SQ20121027517
公开日2012年10月24日 申请日期2012年8月3日 优先权日2012年8月3日
发明者邱然 申请人:北京光泽时代通信技术有限公司