Html页面压缩方法及装置的制造方法

文档序号:10665782阅读:202来源:国知局
Html页面压缩方法及装置的制造方法
【专利摘要】本发明揭示了一种Html页面压缩方法及装置,所述方法包括:根据浏览器请求中的http header获取缓存中对应的Html页面的静态数据压缩段,以及将与所述Html页面对应的动态数据压缩为动态数据压缩段;将所述静态数据压缩段和所述动态数据压缩段合并为Html页面压缩数据,并将所述Html页面压缩数据发送至浏览器。本发明可以将Html页面上的静态内容预先压缩,并缓存,当接收到浏览器请求时,可只将Html页面中的动态数据的压缩,并与静态内容合并后返回,如此,避免了每次请求服务器都需要进行大量的压缩,大大降低了服务器的计算压力。
【专利说明】
Html页面压缩方法及装置
技术领域
[0001]本发明涉及互联网领域,尤其是涉及一种Html页面压缩方法及装置。
【背景技术】
[0002]目前的Html页面压缩的过程是:接收到浏览器的请求,服务器返回与该请求相应的Html页面,并对该Html页面打点,并在打点之后进行页面压缩。所以目前的Html页面压缩,在任何一次请求时,都需要对整个页面的数据进行压缩,导致服务器压力较大。

【发明内容】

[0003]本发明的目的在于提供一种Html页面压缩方法及装置。
[0004]为实现上述发明目的之一,本发明一实施方式提供了一种Html页面压缩方法,所述方法包括:
[0005]根据浏览器请求中的http header获取缓存中对应的Html页面的静态数据压缩段,以及将与所述Html页面对应的动态数据压缩为动态数据压缩段;
[0006]将所述静态数据压缩段和所述动态数据压缩段合并为Html页面压缩数据,并将所述Html页面压缩数据发送至浏览器。
[0007]作为本发明一实施方式的进一步改进,将所述静态数据压缩段和所述动态数据压缩段合并为Html页面压缩数据,具体包括:
[0008]将所述静态数据压缩段与所述动态数据压缩段按照所述Html页面的原始顺序合并为Html页面压缩数据。
[0009]作为本发明一实施方式的进一步改进,所述Html页面压缩数据中,通过一个压缩头信息和一个压缩尾信息将所述静态数据压缩段和所述动态数据压缩段封装。
[0010]作为本发明一实施方式的进一步改进,在获取静态数据压缩段及压缩动态数据前,所述方法包括:
[0011]接收浏览器请求;
[0012]根据所述浏览器请求中的http header生成对应的Html页面;
[0013]将所述Html页面的静态数据和动态数据剥离;
[0014]将所述静态数据压缩为静态数据压缩段并缓存。
[0015]作为本发明一实施方式的进一步改进,将所述静态数据压缩为静态数据压缩段并缓存,具体包括:
[0016]将所述静态数据在一次压缩请求中完成压缩,以生成至少一个静态数据压缩段,并存储所述至少一个静态数据压缩段。
[0017]作为本发明一实施方式的进一步改进,所述方法在对静态数据压缩及对动态数据压缩时具体包括:
[0018]若所述静态数据或所述动态数据为Html页面的头部数据或中部数据,则调用z_full_flush函数进行压缩;
[0019]若所述静态数据或所述动态数据为Html页面的尾部数据,则调用z_sync_flush函数进行压缩。
[0020]作为本发明一实施方式的进一步改进,调用z_full_flush函数对Html页面的中部数据进行压缩具体包括:
[0021]在Html页面中部数据的字符串头部加入空字符串后进行压缩;
[0022]将在所述空字符串上形成的压缩头信息删除。
[0023]作为本发明一实施方式的进一步改进,每个静态数据压缩段均包括字典数据,以可单独进行解压缩。
[0024]作为本发明一实施方式的进一步改进,按照所述Html页面的原始顺序合并为Html页面压缩数据具体包括:
[0025]将所述静态数据压缩段和所述动态数据压缩段按照字符串的顺序拼装为Html页面压缩数据。
[0026]作为本发明一实施方式的进一步改进,所述方法还包括:
[0027]配置Http response header,以通知浏览器其接收的Html页面压缩数据的压缩格式。
[0028]为实现上述发明目的之一,本发明一实施方式提供了一种Html页面压缩装置,所述装置包括:
[0029]调取模块,用于根据浏览器请求中的http header获取缓存中对应的Html页面的静态数据压缩段;
[0030]压缩模块,用于将与所述Html页面对应的动态数据压缩为动态数据压缩段;
[0031]处理模块,用于将所述静态数据压缩段和所述动态数据压缩段合并为Html页面压缩数据,并将所述Html页面压缩数据发送至浏览器。
[0032]作为本发明一实施方式的进一步改进,所述处理模块用于:
[0033]将所述静态数据压缩段与所述动态数据段按照所述Html页面的原始顺序合并为Html页面压缩数据。
[0034]作为本发明一实施方式的进一步改进,所述Html页面压缩数据中,通过一个压缩头信息和一个压缩尾信息将所述静态数据压缩段和所述动态数据压缩段封装。
[0035]作为本发明一实施方式的进一步改进,所述处理模块还用于:
[0036]接收浏览器请求;
[0037]根据所述浏览器请求中的http header生成对应的Html页面;
[0038]将所述Html页面的静态数据和动态数据剥离;所述压缩模块还用于:
[0039]将所述静态数据压缩为静态数据压缩段并缓存。
[0040]作为本发明一实施方式的进一步改进,所述压缩模块用于将所述静态数据在一次压缩请求中完成压缩,以生成至少一个静态数据压缩段,所述装置还包括存储模块,所述存储模块用于:
[0041 ] 存储所述至少一个静态数据压缩段。
[0042]作为本发明一实施方式的进一步改进,所述压缩模块用于:
[0043]若所述静态数据或所述动态数据为Html页面的头部数据或中部数据,则调用z_full_flush函数进行压缩;
[0044]若所述静态数据或所述动态数据为Html页面的尾部数据,则调用z_sync_flush函数进行压缩。
[0045]作为本发明一实施方式的进一步改进,所述处理模块用于:
[0046]在Html页面中部数据的字符串头部加入空字符串后供所述压缩模块进行压缩;
[0047]将在所述空字符串上形成的压缩头信息删除。
[0048]作为本发明一实施方式的进一步改进,每个静态数据压缩段均包括字典数据,以可单独进行解压缩。
[0049]作为本发明一实施方式的进一步改进,所述处理模块用于:
[0050]将所述静态数据压缩段和所述动态数据压缩段按照字符串的顺序拼装为Html页面压缩数据。
[0051]作为本发明一实施方式的进一步改进,所述装置还包括配置模块,用于:
[0052]配置Http response header,以通知浏览器其接收的Html页面压缩数据的压缩格式。
[0053]相对于现有技术,本发明的技术效果在于:本发明的Html页面压缩方法及装置可以将Html页面上的静态内容预先压缩,并缓存,当接收到浏览器请求时,可只将Html页面中的动态数据的压缩,并与静态内容合并后返回,如此,避免了每次请求服务器都需要进行大量的压缩,大大降低了服务器的计算压力。
【附图说明】
[0054]图1是本发明一实施方式中Html页面压缩方法的流程图;
[0055]图2是本发明一实施方式中服务器接收浏览器请求后,对该请求进行反馈的完整工作流程图;
[0056]图3是本发明一实施方式中Html页面压缩方法的示意图;
[0057]图4是本发明一实施方式中Html页面压缩装置的模块图。
【具体实施方式】
[0058]以下将结合附图所示的【具体实施方式】对本发明进行详细描述。但这些实施方式并不限制本发明,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。
[0059]如图1所示,本发明一实施方式中,所述Html页面压缩方法包括:
[0060]根据浏览器请求中的http header获取缓存中对应的Html页面的静态数据压缩段,以及将与所述Html页面对应的动态数据压缩为动态数据压缩段;
[0061]将所述静态数据压缩段和所述动态数据压缩段合并为Html页面压缩数据,并将所述Html页面压缩数据发送至浏览器。
[0062]通过图1对应的上述流程,可以将Html页面上的静态内容预先压缩,并缓存,当接收到浏览器请求时,可只将Html页面中的动态数据的压缩,并与静态内容合并后返回,如此,与现有技术相比避免了每次请求服务器都需要进行大量的压缩,从而大大降低了服务器的计算压力。
[0063]如图2所示,在一具体的示例中,通常地,服务器在接收到浏览器请求后,会首先经过一些公用代码,比如cookie判定。接着,判定浏览器是否接受压缩数据,如果不接受, 则直接产生Html页面,并返回至浏览器。如果浏览器接受压缩数据,则可采用本发明一实施方式的Html页面压缩方法,以形成Html页面压缩数据后再返回浏览器。
[0064]具体地,服务器接收浏览器请求,并根据浏览器请求中的http header包含的一些关键字段,比如说user-agent中的关键数据或者locale,调取缓存中相应的静态数据压缩段。此时,存在两种可能:
[0065]1)缓存中存在对应的静态数据压缩段。
[0066]此时,可获取缓存中的静态数据压缩段,并将与所述Html页面对应的动态数据压缩为动态数据压缩段。
[0067]Html页面数据包括头部数据、中部数据和尾部数据。其中,所述的头部数据、中部数据和尾部数据可分别对应至静态数据或动态数据。
[0068]进一步地,在对静态数据压缩及对动态数据压缩时具体包括:
[0069]若所述静态数据或所述动态数据为Html页面的头部数据或中部数据,则调用z_ full_flush函数进行压缩;
[0070]若所述静态数据或所述动态数据为Html页面的尾部数据,则调用z_sync_flush 函数进行压缩。
[0071]这里,为了描述的简洁,以头部数据和尾部数据对应静态数据、中部数据对应动态数据为例对此时动态数据的压缩做详细的阐述:
[0072]调用z_full_flush函数对Html页面中部数据(动态数据)进行压缩。此处,需要调用z_full_flush函数对所述中部数据进行压缩的原因是,若对于Html中的中部数据使用默认的压缩方式进行压缩,则返回的是压缩包都是完整的。例如,若直接使用JDK中的DEFLATEOutputStream来实现中部数据的压缩,那么每个压缩包都会携带完整DEFLATE 头和尾信息。而对于某些浏览器来说,这些多个完整的压缩包并不能被识别。所以在java 环境中,弓I 入 zlib 的一个 java 实现版本:jzlib (http://www.1craft.com/ izlib/,为本领域普通技术人员的公知常识,在此不再对其进行赘述),jzlib中支持压缩中的flush_ mode (jzlib),故本实施方式中可相应地调用jzlib的z_full_flush函数对所述中部数据进行压缩以得到相应的动态数据压缩段。
[0073]具体的压缩过程中:首先在中部数据(动态数据)的字符串头部加入空字符串后进行压缩,这时,得到的压缩文件中会包含一个在所述空字符串上形成的压缩头信息;并进一步将在所述空字符串上形成的压缩头信息删除,以便于进行接着的“数据压缩段的合并”,此部分内容将在下文做详细的阐述。
[0074]2)缓存中不存在对应的静态数据压缩段。
[0075]这种情况下,表示缓存的数据已经过期,或者服务器启动之后,对该Html页面的请求第一次到来,所以缓存为空。此时,根据本发明的一实施方式:
[0076]首先接收浏览器请求,并根据所述浏览器请求中的http header生成对应的Html 页面,再将所述Html页面的静态数据和动态数据剥离,并将所述静态数据压缩为静态数据压缩段并缓存。通常地,这里利用http header中包含的关键数据,例如user-agent中的关键信息(示范性地:判定需要返回的浏览器是应用于PC还是移动电话)生成对应的Html 页面。
[0077]这里,静态数据在一次压缩请求中完成压缩。为提高压缩效率,本实施方式,可在一次请求中,执行对同一 Html页面数据中的多个分离的静态数据的进行多次压缩。并且, 同步对此时压缩而成的静态数据压缩段进行存储,存储的周期可以根据Html的更新情况进行设定,以便在一个周期后,可以对该静态数据压缩段进行更新。
[0078]同样类似地以头部数据和尾部数据对应静态数据、中部数据对应动态数据为例对此时动态数据和静态数据的压缩做详细的阐述:
[0079]调用jzlib的z_full_flush函数对Html页面头部数据(静态数据)和中部数据(动态数据)进行压缩、且调用jzlib的z_sync_flush函数对Html页面尾部数据 (静态数据)进行压缩。此处,需要调用z_full_flush函数、z_sync_flush函数对相应的所述头部数据、中部数据和尾部数据进行压缩的原因是,若对于Html中的数据使用默认的压缩方式进行压缩,则返回的是每个压缩包都是完整的。例如,若直接使用JDK中的 DEFLATEOutputStream来实现各部分数据的压缩,那么每个压缩包都会携带完整DEFLATE 头和尾信息。而对于某些浏览器来说,这些多个完整的压缩包并不能被识别。所以在 java环境中,引入zlib的一个java实现版本:jzlib,jzlib中支持压缩中的flush_ mode (jzlib),故本实施方式中相应地调用z_full_flush函数和z_sync_flush函数对上述的各部分数据进行压缩以得到静态数据压缩段和动态数据压缩段。
[0080]进一步地,在本实施方式中,所述“将所述静态数据压缩段和所述动态数据压缩段合并为Html页面压缩数据”具体包括:
[0081]将所述静态数据压缩段与所述动态数据压缩段按照所述Html页面的原始顺序合并为Html页面压缩数据。
[0082]『按照Html页面的原始顺序』是指将静态数据压缩段和动态数据压缩段按照字符串的顺序拼装为Html页面压缩数据。此时,由于Html页面上的静态内容已经被预先压缩和缓存,故避免了每次请求服务器都需要进行大量的重复压缩,大大降低了服务器的计算压力。示范性地,这里的动态数据为打点数据。
[0083]进一步地,为了使更多浏览器可识别该Html页面压缩数据,所述Html页面压缩数据中,通过一个压缩头信息和一个压缩尾信息将所述静态数据压缩段和所述动态数据压缩段封装。
[0084]如图3所示,以一个Html页面包括两个静态数据压缩段:DEFLATE Data A(头部数据压缩段)、DEFLATE Data C (尾部数据压缩段)和一个动态数据压缩段:DEFLATE Data B(中部数据压缩段)为例。DEFLATE Data A *z_full_flush函数压缩而成,其包含一个 DEFLATE Header,DEFLATE Data C*z_sync_flush 函数压缩而成,其包含一个 DEFLATE Tail。DEFLATE Data B*z_full_flush 函数压缩而成,在 DEFLATE Data B 的压缩过程中, 在其对应的字符串头部插入空字符串,并在压缩后再将在该空字符串上形成的压缩头信息删除。如此,DEFLATE Data A、DEFLATE Data B、DEFLATE Data C可以顺序合并成一个完整的Html页面压缩数据。
[0085]当然,在示范性的一替换的实施方式中,DEFLATE Data B也可以是由z_sync_ flush函数压缩而成,相应地,在DEFLATE Data B的压缩过程中,在其对应的字符串尾部插入空字符串,并在压缩后再将在该空字符串上形成的压缩尾信息删除。如此,同样可以将 DEFLATE Data A、DEFLATE Data B、DEFLATE Data C 顺序合并成一个完整的 Html 页面压缩数据。
[0086]在本实施方式中,每个静态数据压缩段均包括字典数据,而并非使用第一压缩段的字典数据,以可单独进行解压缩。
[0087]最后,再将上述的Html页面压缩数据发送至浏览器。在此过程中,先配置Http response header,以通知浏览器其接收的Html页面压缩数据的压缩格式,再将Html页面压缩数据放入response的缓冲区。缓冲区将Html页面压缩数据再最终返回至浏览器以完成整个Html页面发送至浏览器的过程。
[0088]在一个本发明Html页面压缩方法的java版方案实现示例中,预先生成了 a_html 和c_html,这两个页面中间还有一部分动态数据。先把a_html和c_html压缩并放入缓存, 然后每次请求来时从缓存调取该静态压缩数据,而缓存如果没有,则重新动态生成静态压缩数据;接着产生动态数据并压缩,然后设置HTTP response header,最后按照页面的原始顺序将压缩包刷入response的缓冲区。
[0089]值得注意的是,在压缩动态数据的过程中,无需每次都创建ZStream,只需要为每条线程创建一次,即可重复使用。通过这样的方式,一个数百KB的页面,少量的动态数据将会被实施压缩,绝大部分的数据会被预先压缩之后,后续请求过来无需再次压缩,成功地避免了很多重复计算。
[0090]如图4所示,在本发明一实施方式中,所述Html页面压缩装置100包括调取模块 10、压缩模块20、以及处理模块30。
[0091]所述调取模块10用于根据浏览器请求中的http header获取缓存中对应的Html 页面的静态数据压缩段;
[0092]所述压缩模块20用于将与所述Html页面对应的动态数据压缩为动态数据压缩段;
[0093]所述处理模块30用于将所述静态数据压缩段和所述动态数据压缩段合并为Html 页面压缩数据,并将所述Html页面压缩数据发送至浏览器。
[0094]在一具体的示例中,通常地,服务器在接收到浏览器请求后,会首先经过一些公用代码,比如cookie判定。接着,判定浏览器是否接受压缩数据,如果不接受,则直接产生Html页面,并返回至浏览器。如果浏览器接受压缩数据,则可采用本发明一实施方式的 Html页面压缩装置,以形成Html页面压缩数据后再返回浏览器。
[0095]具体地,服务器接收浏览器请求,并根据浏览器请求中的http header包含的一些关键字段,比如说user-agent中的关键数据或者locale,调取缓存中相应的静态数据压缩段。此时,存在两种可能:
[0096]1)缓存中存在对应的静态数据压缩段。
[0097]此时,可获取缓存中的静态数据压缩段,并将与所述Html页面对应的动态数据压缩为动态数据压缩段。
[0098]Html页面数据包括头部数据、中部数据和尾部数据。其中,所述的头部数据、中部数据和尾部数据可分别对应至静态数据或动态数据。
[0099]所述压缩模块20用于:[〇1〇〇]若所述静态数据或所述动态数据为Html页面的头部数据或中部数据,则调用z_full_flush函数进行压缩;
[0101]若所述静态数据或所述动态数据为Html页面的尾部数据,则调用z_sync_flush函数进行压缩。[〇1〇2]这里,为了描述的简洁,以头部数据和尾部数据对应静态数据、中部数据对应动态数据为例对此时动态数据的压缩做详细的阐述:
[0103]压缩模块20调用z_full_flush函数对Html页面中部数据(动态数据)进行压缩。此处,需要调用z_full_flush函数对所述中部数据进行压缩的原因是,若对于Html中的中部数据使用默认的压缩方式进行压缩,则返回的是压缩包都是完整的。例如,若直接使用JDK中的DEFLATEOutputStream来实现中部数据的压缩,那么每个压缩包都会携带完整DEFLATE头和尾信息。而对于某些浏览器来说,这些多个完整的压缩包并不能被识别。 所以在 java 环境中,引入 zlib 的一个 java 实现版本:jzlib (http://www.1craft.com/.1zlib/,为本领域普通技术人员的公知常识,在此不再对其进行赘述),jzlib中支持压缩中的flush_mode (jzlib),故本实施方式中可相应地调用jzlib的z_full_flush函数对所述中部数据进行压缩以得到相应的动态数据压缩段。
[0104]具体的压缩过程中:处理模块30首先在中部数据(动态数据)的字符串头部加入空字符串后供压缩模块20进行压缩,这时,得到的压缩文件中会包含一个在所述空字符串上形成的压缩头信息;处理模块30进一步将在所述空字符串上形成的压缩头信息删除,以便于进行接着的“数据压缩段的合并”,此部分内容将在下文做详细的阐述。
[0105]2)缓存中不存在对应的静态数据压缩段。
[0106]这种情况下,表示缓存的数据已经过期,或者服务器启动之后,对该Html页面的请求第一次到来,所以缓存为空。此时,根据本发明的一实施方式:
[0107]处理模块30用于首先接收浏览器请求,并根据所述浏览器请求中的http header 生成对应的Html页面,再将所述Html页面的静态数据和动态数据剥离,压缩模块20用于将所述静态数据压缩为静态数据压缩段并缓存。通常地,这里利用http header中包含的关键数据,例如user-agent中的关键信息(示范性地:判定需要返回的浏览器是应用于PC 还是移动电话)生成对应的Html页面。
[0108]这里,静态数据在一次压缩请求中对多个静态完成压缩。为提高效率,本实施方式中,可在一次压缩请求中,执行对同一 Html页面数据中的多个分离的静态数据的多次压缩。并且,存储模块40同步对此时压缩而成的静态数据压缩段进行存储,存储的周期可以根据Html的更新情况进行设定,以便在一个周期后,可以对该静态数据压缩段进行更新。
[0109]同样类似地以头部数据和尾部数据对应静态数据、中部数据对应动态数据为例对此时动态数据和静态数据的压缩做详细的阐述:
[0110]调用jzlib的z_full_flush函数对Html页面头部数据(静态数据)和中部数据(动态数据)进行压缩、且调用jzlib的z_sync_flush函数对Html页面尾部数据 (静态数据)进行压缩。此处,需要调用z_full_flush函数、z_sync_flush函数对相应的所述头部数据、中部数据和尾部数据进行压缩的原因是,若对于Html中的数据使用默认的压缩方式进行压缩,则返回的是每个压缩包都是完整的。例如,若直接使用JDK中的 DEFLATEOutputStream来实现各部分数据的压缩,那么每个压缩包都会携带完整DEFLATE 头和尾信息。而对于某些浏览器来说,这些多个完整的压缩包并不能被识别。所以在 java环境中,引入zlib的一个java实现版本:jzlib,jzlib中支持压缩中的flush_mode (jzlib),故本实施方式中相应地调用z_full_flush函数和z_sync_flush函数对上述的各部分数据进行压缩以得到静态数据压缩段和动态数据压缩段。
[0111]进一步地,在本实施方式中,处理模块30还用于:
[0112]将所述静态数据压缩段与所述动态数据压缩段按照所述Html页面的原始顺序合并为Html页面压缩数据。
[0113]『按照Html页面的原始顺序』是指处理模块30将静态数据压缩段和动态数据压缩段按照字符串的顺序拼装为Html页面压缩数据。此时,由于Html页面上的静态内容已经被预先压缩和缓存,故避免了每次请求服务器都需要进行大量的重复压缩,大大降低了服务器的计算压力。示范性地,这里的动态数据为打点数据。
[0114]进一步地,为了使更多浏览器可识别该Html页面压缩数据,在Html页面压缩数据中,是通过一个压缩头信息和一个压缩尾信息将静态数据压缩段和动态数据压缩段封装。
[0115]如图3所示,以一个Html页面包括两个静态数据压缩段:DEFLATE Data A(头部数据压缩段)、DEFLATE Data C (尾部数据压缩段)和一个动态数据压缩段:DEFLATE Data B(中部数据压缩段)为例。DEFLATE Data A *z_full_flush函数压缩而成,其包含一个 DEFLATE Header,DEFLATE Data C*z_sync_flush 函数压缩而成,其包含一个 DEFLATE Tail。DEFLATE Data B*z_full_flush 函数压缩而成,在 DEFLATE Data B 的压缩过程中, 在其对应的字符串头部插入空字符串,并在压缩后再将在该空字符串上形成的压缩头信息删除。如此,DEFLATE Data A、DEFLATE Data B、DEFLATE Data C可以顺序合并成一个完整的Html页面压缩数据。
[0116]当然,在示范性的一替换的实施方式中,DEFLATE Data B也可以是由压缩模块20 调用z_sync_flush函数压缩而成,相应地,在DEFLATE Data B的压缩过程中,处理模块30 在其对应的字符串尾部插入空字符串,并在压缩后再将在该空字符串上形成的压缩尾信息删除。如此,同样可以将DEFLATE Data A、DEFLATE Data B、DEFLATE Data C顺序合并成一个完整的Html页面压缩数据。
[0117]在本实施方式中,每个静态数据压缩段均包括字典数据,而并非使用第一压缩段的字典数据,以可单独进行解压缩。
[0118]最后,处理模块30再将上述的Html页面压缩数据发送至浏览器。在此过程中,配置模块50首先为Html页面压缩数据配置Http response header,以通知浏览器其接收的 Html页面压缩数据的压缩格式,处理模块30再将Html页面压缩数据放入response的缓冲区。缓冲区将压缩Html页面压缩数据再最终返回至浏览器以完成整个Html页面发送至浏览器的过程。
[0119]需要说明的是,上述的调取模块10、压缩模块20、处理模块30、存储模块40、和配置模块50都为根据逻辑功能的一种示范性的划分,实际的应用中,可能是由代理服务器、 或应用服务器、或代理服务器和应用服务器协同实现上述实施方式中各模块的功能,而上述的各模块也可以相应地被视为共同构成所述代理服务器和应用服务器的至少部分。
[0120]综上所述,本发明的Html页面压缩方法及装置可以将Html页面上的静态内容预先压缩,并缓存,当接收到浏览器请求时,可只将Html页面中的动态数据的压缩,并与静态内容合并后返回,如此,避免了每次请求服务器都需要进行大量的压缩,大大降低了服务器的计算压力。
[0121]所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置, 装置和模块的具体工作过程,可以参考前述方法实施方式中的对应过程,在此不再赘述。
[0122]综上所述,本发明的Html页面压缩方法及装置可以将Html页面上的静态内容预先压缩,并缓存,当接收到浏览器请求时,可只将Html页面中的动态数据的压缩,并与静态内容合并后返回,如此,避免了每次请求服务器都需要进行大量的压缩,大大降低了服务器的计算压力。
[0123]在本发明所提供的几个实施方式中,应该理解到,所揭露的装置,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0124]所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施方式方案的目的。
[0125]另外,在本发明各个实施方式中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以2个或2个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
[0126]上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)或处理器(processor)执行本发明各个实施方式所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器 (Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0127]最后应说明的是:以上实施方式仅用以说明本发明的技术方案,而非对其限制; 尽管参照前述实施方式对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施方式技术方案的精神和范围。
【主权项】
1.一种Html页面压缩方法,其特征在于,所述方法包括: 根据浏览器请求中的http header获取缓存中对应的Html页面的静态数据压缩段,以及将与所述Html页面对应的动态数据压缩为动态数据压缩段; 将所述静态数据压缩段和所述动态数据压缩段合并为Html页面压缩数据,并将所述Html页面压缩数据发送至浏览器。2.根据权利要求1所述的Html页面压缩方法,其特征在于,将所述静态数据压缩段和所述动态数据压缩段合并为Html页面压缩数据,具体包括: 将所述静态数据压缩段与所述动态数据压缩段按照所述Html页面的原始顺序合并为Html页面压缩数据。3.根据权利要求1或2所述的Html页面压缩方法,其特征在于,所述Html页面压缩数据中,通过一个压缩头信息和一个压缩尾信息将所述静态数据压缩段和所述动态数据压缩段封装。4.根据权利要求1所述的Html页面压缩方法,其特征在于,在获取静态数据压缩段及压缩动态数据前,所述方法包括: 接收浏览器请求; 根据所述浏览器请求中的http header生成对应的Html页面; 将所述Html页面的静态数据和动态数据剥离; 将所述静态数据压缩为静态数据压缩段并缓存。5.根据权利要求4所述的Html页面压缩方法,其特征在于,将所述静态数据压缩为静态数据压缩段并缓存,具体包括: 将所述静态数据在一次压缩请求中完成压缩,以生成至少一个静态数据压缩段,并存储所述至少一个静态数据压缩段。6.根据权利要求4所述的Html页面压缩方法,其特征在于,所述方法在对静态数据压缩及对动态数据压缩时,具体包括: 若所述静态数据或所述动态数据为Html页面的头部数据或中部数据,则调用z_full_flush函数进行压缩; 若所述静态数据或所述动态数据为Html页面的尾部数据,则调用z_Sync_flUSh函数进行压缩。7.根据权利要求6所述的Html页面压缩方法,其特征在于,调用z_full_flush函数对Html页面的中部数据进行压缩,具体包括: 在Html页面中部数据的字符串头部加入空字符串后进行压缩; 将在所述空字符串上形成的压缩头信息删除。8.根据权利要求1所述的Html页面压缩方法,其特征在于,每个静态数据压缩段均包括字典数据,以可单独进行解压缩。9.根据权利要求2所述的Html页面压缩方法,其特征在于,按照所述Html页面的原始顺序合并为Html页面压缩数据,具体包括: 将所述静态数据压缩段和所述动态数据压缩段按照字符串的顺序拼装为Html页面压缩数据。10.根据权利要求1所述的Html页面压缩方法,其特征在于,所述方法还包括: 配置Http response header,以通知浏览器其接收的Html页面压缩数据的压缩格式。11.一种Html页面压缩装置,其特征在于,所述装置包括: 调取模块,用于根据浏览器请求中的http header获取缓存中对应的Html页面的静态数据压缩段; 压缩模块,用于将与所述Html页面对应的动态数据压缩为动态数据压缩段; 处理模块,用于将所述静态数据压缩段和所述动态数据压缩段合并为Html页面压缩数据,并将所述Html页面压缩数据发送至浏览器。12.根据权利要求11所述的Html页面压缩装置,其特征在于,所述处理模块用于: 将所述静态数据压缩段与所述动态数据段按照所述Html页面的原始顺序合并为Html页面压缩数据。13.根据权利要求11或12所述的Html页面压缩装置,其特征在于,所述Html页面压缩数据中,通过一个压缩头信息和一个压缩尾信息将所述静态数据压缩段和所述动态数据压缩段封装。14.根据权利要求11所述的Html页面压缩装置,其特征在于,所述处理模块还用于: 接收浏览器请求; 根据所述浏览器请求中的http header生成对应的Html页面; 将所述Html页面的静态数据和动态数据剥离;所述压缩模块还用于: 将所述静态数据压缩为静态数据压缩段并缓存。15.根据权利要求14所述的Html页面压缩装置,其特征在于,所述压缩模块用于将所述静态数据在一次压缩请求中完成压缩,以生成至少一个静态数据压缩段,所述装置还包括存储模块,所述存储模块用于: 存储所述至少一个静态数据压缩段。16.根据权利要求14所述的Html页面压缩装置,其特征在于,所述压缩模块用于: 若所述静态数据或所述动态数据为Html页面的头部数据或中部数据,则调用z_full_flush函数进行压缩; 若所述静态数据或所述动态数据为Html页面的尾部数据,则调用z_Sync_flUSh函数进行压缩。17.根据权利要求16所述的Html页面压缩装置,其特征在于,所述处理模块用于: 在Html页面中部数据的字符串头部加入空字符串后供所述压缩模块进行压缩; 将在所述空字符串上形成的压缩头信息删除。18.根据权利要求11所述的Html页面压缩装置,其特征在于,每个静态数据压缩段均包括字典数据,以可单独进行解压缩。19.根据权利要求12所述的Html页面压缩装置,其特征在于,所述处理模块用于: 将所述静态数据压缩段和所述动态数据压缩段按照字符串的顺序拼装为Html页面压缩数据。20.根据权利要求11所述的Html页面压缩装置,其特征在于,所述装置还包括配置模块,用于: 配置Http response header,以通知浏览器其接收的Html页面压缩数据的压缩格式。
【文档编号】G06F17/30GK106033448SQ201510115508
【公开日】2016年10月19日
【申请日】2015年3月17日
【发明人】张荣华
【申请人】阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1