WO2016146009A1 - Html页面压缩方法及装置 - Google Patents

Html页面压缩方法及装置 Download PDF

Info

Publication number
WO2016146009A1
WO2016146009A1 PCT/CN2016/075942 CN2016075942W WO2016146009A1 WO 2016146009 A1 WO2016146009 A1 WO 2016146009A1 CN 2016075942 W CN2016075942 W CN 2016075942W WO 2016146009 A1 WO2016146009 A1 WO 2016146009A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
compression
html page
segment
compressed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
PCT/CN2016/075942
Other languages
English (en)
French (fr)
Inventor
张荣华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Publication of WO2016146009A1 publication Critical patent/WO2016146009A1/zh
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor

Definitions

  • the present invention relates to the field of the Internet, and in particular, to a Html page compression method and apparatus.
  • the current Html page compression process is: receiving a browser request, the server returns the Html page corresponding to the request, and dot the Html page, and performs page compression after the dot. Therefore, the current Html page compression, in any request, you need to compress the data of the entire page, resulting in greater server pressure.
  • an embodiment of the present invention provides a Html page compression method, the method comprising:
  • Html page compression data which specifically includes:
  • the static data compressed segment and the dynamic data compressed segment are encapsulated by a compressed header information and a compressed tail information.
  • the method before acquiring the static data compression segment and compressing the dynamic data, the method includes:
  • the static data is compressed into a static data compression segment and cached.
  • the static data is compressed into a static data compression segment and cached, and specifically includes:
  • the static data is compressed in a compression request to generate at least one static data compression segment, and the at least one static data compression segment is stored.
  • the static data or the dynamic data is the header data or the middle data of the Html page.
  • the z_sync_flush function is called to perform compression.
  • invoking the z_full_flush function to compress the central data of the Html page includes:
  • the compression header information formed on the empty string is deleted.
  • each static data compression segment includes dictionary data to be decompressible separately.
  • the merging into the Html page compression data according to the original order of the Html page specifically includes:
  • the static data compression segment and the dynamic data compression segment are assembled into Html page compression data in the order of a character string.
  • the method further includes:
  • an embodiment of the present invention provides an Html page compression apparatus, the apparatus comprising:
  • the calling module is configured to obtain a static data compression segment of the corresponding Html page in the cache according to the http header in the browser request;
  • a compression module configured to compress dynamic data corresponding to the Html page into a dynamic data compression segment
  • a processing module configured to merge the static data compression segment and the dynamic data compression segment into Html page compression data, and send the Html page compression data to a browser.
  • the processing module is configured to:
  • the static data compression segment and the dynamic data segment are merged into Html page compressed data according to the original order of the Html page.
  • the static data compressed segment and the dynamic data compressed segment are encapsulated by a compressed header information and a compressed tail information.
  • the compression module is configured to compress the static data in a compression request to generate at least one static data compression segment
  • the device further includes a storage module, the storage module Used for:
  • the compressed file will contain a compressed header information formed on the empty string. And further deleting the compression header information formed on the empty string to facilitate the subsequent "merging of data compression segments", which will be explained in detail below.
  • the static data compression segment and the dynamic data compression segment are assembled into Html page compression data in the order of the string.
  • the static content on the Html page has been pre-compressed and cached, it avoids a large amount of repeated compression every time the request server is required, which greatly reduces the computing pressure of the server.
  • the dynamic data here is dot data.
  • the compression module 20 is configured to:
  • each compressed package will carry the full DEFLATE header and trailer information. For some browsers, these multiple complete archives are not recognized. So in the java environment, a java implementation version of zlib is introduced: jzlib, jzlib supports the flush_mode (jzlib) in compression, so in this embodiment, the z_full_flush function and the z_sync_flush function are respectively called to compress the above-mentioned partial data to obtain Static data compression segment and dynamic data compression segment.
  • the Html page compression method and apparatus of the present invention can pre-compress and cache the static content on the Html page, and when receiving the browser request, can only compress the dynamic data in the Html page, and Static content is returned after merging. In this way, it avoids a lot of compression every time the request server needs, which greatly reduces the computing pressure of the server.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种Html页面压缩方法及装置,所述方法包括:根据浏览器请求中的http header获取缓存中对应的Html页面的静态数据压缩段,以及将与所述Html页面对应的动态数据压缩为动态数据压缩段;将所述静态数据压缩段和所述动态数据压缩段合并为Html页面压缩数据,并将所述Html页面压缩数据发送至浏览器。可以将Html页面上的静态内容预先压缩,并缓存,当接收到浏览器请求时,可只将Html页面中的动态数据的压缩,并与静态内容合并后返回,如此,避免了每次请求服务器都需要进行大量的压缩,大大降低了服务器的计算压力。

Description

Html页面压缩方法及装置
本申请要求2015年03月17日递交的申请号为201510115508.0、发明名称为“Html页面压缩方法及装置”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本发明涉及互联网领域,尤其是涉及一种Html页面压缩方法及装置。
背景技术
目前的Html页面压缩的过程是:接收到浏览器的请求,服务器返回与该请求相应的Html页面,并对该Html页面打点,并在打点之后进行页面压缩。所以目前的Html页面压缩,在任何一次请求时,都需要对整个页面的数据进行压缩,导致服务器压力较大。
发明内容
本发明的目的在于提供一种Html页面压缩方法及装置。
为实现上述发明目的之一,本发明一实施方式提供了一种Html页面压缩方法,所述方法包括:
根据浏览器请求中的http header获取缓存中对应的Html页面的静态数据压缩段,以及将与所述Html页面对应的动态数据压缩为动态数据压缩段;
将所述静态数据压缩段和所述动态数据压缩段合并为Html页面压缩数据,并将所述Html页面压缩数据发送至浏览器。
作为本发明一实施方式的进一步改进,将所述静态数据压缩段和所述动态数据压缩段合并为Html页面压缩数据,具体包括:
将所述静态数据压缩段与所述动态数据压缩段按照所述Html页面的原始顺序合并为Html页面压缩数据。
作为本发明一实施方式的进一步改进,所述Html页面压缩数据中,通过一个压缩头信息和一个压缩尾信息将所述静态数据压缩段和所述动态数据压缩段封装。
作为本发明一实施方式的进一步改进,在获取静态数据压缩段及压缩动态数据前,所述方法包括:
接收浏览器请求;
根据所述浏览器请求中的http header生成对应的Html页面;
将所述Html页面的静态数据和动态数据剥离;
将所述静态数据压缩为静态数据压缩段并缓存。
作为本发明一实施方式的进一步改进,将所述静态数据压缩为静态数据压缩段并缓存,具体包括:
将所述静态数据在一次压缩请求中完成压缩,以生成至少一个静态数据压缩段,并存储所述至少一个静态数据压缩段。
作为本发明一实施方式的进一步改进,所述方法在对静态数据压缩及对动态数据压缩时具体包括:
若所述静态数据或所述动态数据为Html页面的头部数据或中部数据,则
调用z_full_flush函数进行压缩;
若所述静态数据或所述动态数据为Html页面的尾部数据,则调用z_sync_flush函数进行压缩。
作为本发明一实施方式的进一步改进,调用z_full_flush函数对Html页面的中部数据进行压缩具体包括:
在Html页面中部数据的字符串头部加入空字符串后进行压缩;
将在所述空字符串上形成的压缩头信息删除。
作为本发明一实施方式的进一步改进,每个静态数据压缩段均包括字典数据,以可单独进行解压缩。
作为本发明一实施方式的进一步改进,按照所述Html页面的原始顺序合并为Html页面压缩数据具体包括:
将所述静态数据压缩段和所述动态数据压缩段按照字符串的顺序拼装为Html页面压缩数据。
作为本发明一实施方式的进一步改进,所述方法还包括:
配置Http response header,以通知浏览器其接收的Html页面压缩数据的压缩格式。
为实现上述发明目的之一,本发明一实施方式提供了一种Html页面压缩装置,所述装置包括:
调取模块,用于根据浏览器请求中的http header获取缓存中对应的Html页面的静态数据压缩段;
压缩模块,用于将与所述Html页面对应的动态数据压缩为动态数据压缩段;
处理模块,用于将所述静态数据压缩段和所述动态数据压缩段合并为Html页面压缩数据,并将所述Html页面压缩数据发送至浏览器。
作为本发明一实施方式的进一步改进,所述处理模块用于:
将所述静态数据压缩段与所述动态数据段按照所述Html页面的原始顺序合并为Html页面压缩数据。
作为本发明一实施方式的进一步改进,所述Html页面压缩数据中,通过一个压缩头信息和一个压缩尾信息将所述静态数据压缩段和所述动态数据压缩段封装。
作为本发明一实施方式的进一步改进,所述处理模块还用于:
接收浏览器请求;
根据所述浏览器请求中的http header生成对应的Html页面;
将所述Html页面的静态数据和动态数据剥离;所述压缩模块还用于:
将所述静态数据压缩为静态数据压缩段并缓存。
作为本发明一实施方式的进一步改进,所述压缩模块用于将所述静态数据在一次压缩请求中完成压缩,以生成至少一个静态数据压缩段,所述装置还包括存储模块,所述存储模块用于:
存储所述至少一个静态数据压缩段。
作为本发明一实施方式的进一步改进,所述压缩模块用于:
若所述静态数据或所述动态数据为Html页面的头部数据或中部数据,则
调用z_full_flush函数进行压缩;
若所述静态数据或所述动态数据为Html页面的尾部数据,则调用z_sync_flush函数进行压缩。
作为本发明一实施方式的进一步改进,所述处理模块用于:
在Html页面中部数据的字符串头部加入空字符串后供所述压缩模块进行压缩;
将在所述空字符串上形成的压缩头信息删除。
作为本发明一实施方式的进一步改进,每个静态数据压缩段均包括字典数据,以可单独进行解压缩。
作为本发明一实施方式的进一步改进,所述处理模块用于:
将所述静态数据压缩段和所述动态数据压缩段按照字符串的顺序拼装为Html页面压缩数据。
作为本发明一实施方式的进一步改进,所述装置还包括配置模块,用于:
配置Http response header,以通知浏览器其接收的Html页面压缩数据的压缩格式。
相对于现有技术,本发明的技术效果在于:本发明的Html页面压缩方法及装置可以 将Html页面上的静态内容预先压缩,并缓存,当接收到浏览器请求时,可只将Html页面中的动态数据的压缩,并与静态内容合并后返回,如此,避免了每次请求服务器都需要进行大量的压缩,大大降低了服务器的计算压力。
附图说明
图1是本发明一实施方式中Html页面压缩方法的流程图;
图2是本发明一实施方式中服务器接收浏览器请求后,对该请求进行反馈的完整工作流程图;
图3是本发明一实施方式中Html页面压缩方法的示意图;
图4是本发明一实施方式中Html页面压缩装置的模块图。
具体实施方式
以下将结合附图所示的具体实施方式对本发明进行详细描述。但这些实施方式并不限制本发明,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。
如图1所示,本发明一实施方式中,所述Html页面压缩方法包括:
根据浏览器请求中的http header获取缓存中对应的Html页面的静态数据压缩段,以及将与所述Html页面对应的动态数据压缩为动态数据压缩段;
将所述静态数据压缩段和所述动态数据压缩段合并为Html页面压缩数据,并将所述Html页面压缩数据发送至浏览器。
通过图1对应的上述流程,可以将Html页面上的静态内容预先压缩,并缓存,当接收到浏览器请求时,可只将Html页面中的动态数据的压缩,并与静态内容合并后返回,如此,与现有技术相比避免了每次请求服务器都需要进行大量的压缩,从而大大降低了服务器的计算压力。
如图2所示,在一具体的示例中,通常地,服务器在接收到浏览器请求后,会首先经过一些公用代码,比如cookie判定。接着,判定浏览器是否接受压缩数据,如果不接受,则直接产生Html页面,并返回至浏览器。如果浏览器接受压缩数据,则可采用本发明一实施方式的Html页面压缩方法,以形成Html页面压缩数据后再返回浏览器。
具体地,服务器接收浏览器请求,并根据浏览器请求中的http header包含的一些关键字段,比如说user-agent中的关键数据或者locale,调取缓存中相应的静态数据压缩段。 此时,存在两种可能:
1)缓存中存在对应的静态数据压缩段。
此时,可获取缓存中的静态数据压缩段,并将与所述Html页面对应的动态数据压缩为动态数据压缩段。
Html页面数据包括头部数据、中部数据和尾部数据。其中,所述的头部数据、中部数据和尾部数据可分别对应至静态数据或动态数据。
进一步地,在对静态数据压缩及对动态数据压缩时具体包括:
若所述静态数据或所述动态数据为Html页面的头部数据或中部数据,则
调用z_full_flush函数进行压缩;
若所述静态数据或所述动态数据为Html页面的尾部数据,则调用z_sync_flush函数进行压缩。
这里,为了描述的简洁,以头部数据和尾部数据对应静态数据、中部数据对应动态数据为例对此时动态数据的压缩做详细的阐述:
调用z_full_flush函数对Html页面中部数据(动态数据)进行压缩。此处,需要调用z_full_flush函数对所述中部数据进行压缩的原因是,若对于Html中的中部数据使用默认的压缩方式进行压缩,则返回的是压缩包都是完整的。例如,若直接使用JDK中的DEFLATEOutputStream来实现中部数据的压缩,那么每个压缩包都会携带完整DEFLATE头和尾信息。而对于某些浏览器来说,这些多个完整的压缩包并不能被识别。所以在java环境中,引入zlib的一个java实现版本:jzlib(http://www.jcraft.com/jzlib/,为本领域普通技术人员的公知常识,在此不再对其进行赘述),jzlib中支持压缩中的flush_mode(jzlib),故本实施方式中可相应地调用jzlib的z_full_flush函数对所述中部数据进行压缩以得到相应的动态数据压缩段。
具体的压缩过程中:首先在中部数据(动态数据)的字符串头部加入空字符串后进行压缩,这时,得到的压缩文件中会包含一个在所述空字符串上形成的压缩头信息;并进一步将在所述空字符串上形成的压缩头信息删除,以便于进行接着的“数据压缩段的合并”,此部分内容将在下文做详细的阐述。
2)缓存中不存在对应的静态数据压缩段。
这种情况下,表示缓存的数据已经过期,或者服务器启动之后,对该Html页面的请求第一次到来,所以缓存为空。此时,根据本发明的一实施方式:
首先接收浏览器请求,并根据所述浏览器请求中的http header生成对应的Html页面, 再将所述Html页面的静态数据和动态数据剥离,并将所述静态数据压缩为静态数据压缩段并缓存。通常地,这里利用http header中包含的关键数据,例如user-agent中的关键信息(示范性地:判定需要返回的浏览器是应用于PC还是移动电话)生成对应的Html页面。
这里,静态数据在一次压缩请求中完成压缩。为提高压缩效率,本实施方式,可在一次请求中,执行对同一Html页面数据中的多个分离的静态数据的多次压缩。并且,同步对此时压缩而成的静态数据压缩段进行存储,存储的周期可以根据Html的更新情况进行设定,以便在一个周期后,可以对该静态数据压缩段进行更新。
同样类似地以头部数据和尾部数据对应静态数据、中部数据对应动态数据为例对此时动态数据和静态数据的压缩做详细的阐述:
调用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函数对上述的各部分数据进行压缩以得到静态数据压缩段和动态数据压缩段。
进一步地,在本实施方式中,所述“将所述静态数据压缩段和所述动态数据压缩段合并为Html页面压缩数据”具体包括:
将所述静态数据压缩段与所述动态数据压缩段按照所述Html页面的原始顺序合并为Html页面压缩数据。
『按照Html页面的原始顺序』是指将静态数据压缩段和动态数据压缩段按照字符串的顺序拼装为Html页面压缩数据。此时,由于Html页面上的静态内容已经被预先压缩和缓存,故避免了每次请求服务器都需要进行大量的重复压缩,大大降低了服务器的计算压力。示范性地,这里的动态数据为打点数据。
进一步地,为了使更多浏览器可识别该Html页面压缩数据,所述Html页面压缩数据中,通过一个压缩头信息和一个压缩尾信息将所述静态数据压缩段和所述动态数据压 缩段封装。
如图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页面压缩数据。
当然,在示范性的一替换的实施方式中,DEFLATE Data B也可以是由z_sync_flush函数压缩而成,相应地,在DEFLATE Data B的压缩过程中,在其对应的字符串尾部插入空字符串,并在压缩后再将在该空字符串上形成的压缩尾信息删除。如此,同样可以将DEFLATE Data A、DEFLATE Data B、DEFLATE Data C顺序合并成一个完整的Html页面压缩数据。
在本实施方式中,每个静态数据压缩段均包括字典数据,而并非使用第一压缩段的字典数据,以可单独进行解压缩。
最后,再将上述的Html页面压缩数据发送至浏览器。在此过程中,先配置Http response header,以通知浏览器其接收的Html页面压缩数据的压缩格式,再将Html页面压缩数据放入response的缓冲区。缓冲区将Html页面压缩数据再最终返回至浏览器以完成整个Html页面发送至浏览器的过程。
在一个本发明Html页面压缩方法的java版方案实现示例中,预先生成了a_html和c_html,这两个页面中间还有一部分动态数据。先把a_html和c_html压缩并放入缓存,然后每次请求来时从缓存调取该静态压缩数据,而缓存如果没有,则重新动态生成静态压缩数据;接着产生动态数据并压缩,然后设置HTTP response header,最后按照页面的原始顺序将压缩包刷入response的缓冲区。
值得注意的是,在压缩动态数据的过程中,无需每次都创建ZStream,只需要为每条线程创建一次,即可重复使用。通过这样的方式,一个数百KB的页面,少量的动态数据将会被实施压缩,绝大部分的数据会被预先压缩之后,后续请求过来无需再次压缩,成功地避免了很多重复计算。
如图4所示,在本发明一实施方式中,所述Html页面压缩装置100包括调取模块 10、压缩模块20、以及处理模块30。
所述调取模块10用于根据浏览器请求中的http header获取缓存中对应的Html页面的静态数据压缩段;
所述压缩模块20用于将与所述Html页面对应的动态数据压缩为动态数据压缩段;
所述处理模块30用于将所述静态数据压缩段和所述动态数据压缩段合并为Html页面压缩数据,并将所述Html页面压缩数据发送至浏览器。
在一具体的示例中,通常地,服务器在接收到浏览器请求后,会首先经过一些公用代码,比如cookie判定。接着,判定浏览器是否接受压缩数据,如果不接受,则直接产生Html页面,并返回至浏览器。如果浏览器接受压缩数据,则可采用本发明一实施方式的Html页面压缩装置,以形成Html页面压缩数据后再返回浏览器。
具体地,服务器接收浏览器请求,并根据浏览器请求中的http header包含的一些关键字段,比如说user-agent中的关键数据或者locale,调取缓存中相应的静态数据压缩段。此时,存在两种可能:
1)缓存中存在对应的静态数据压缩段。
此时,可获取缓存中的静态数据压缩段,并将与所述Html页面对应的动态数据压缩为动态数据压缩段。
Html页面数据包括头部数据、中部数据和尾部数据。其中,所述的头部数据、中部数据和尾部数据可分别对应至静态数据或动态数据。
所述压缩模块20用于:
若所述静态数据或所述动态数据为Html页面的头部数据或中部数据,则
调用z_full_flush函数进行压缩;
若所述静态数据或所述动态数据为Html页面的尾部数据,则调用z_sync_flush函数进行压缩。
这里,为了描述的简洁,以头部数据和尾部数据对应静态数据、中部数据对应动态数据为例对此时动态数据的压缩做详细的阐述:
压缩模块20调用z_full_flush函数对Html页面中部数据(动态数据)进行压缩。此处,需要调用z_full_flush函数对所述中部数据进行压缩的原因是,若对于Html中的中部数据使用默认的压缩方式进行压缩,则返回的是压缩包都是完整的。例如,若直接使用JDK中的DEFLATEOutputStream来实现中部数据的压缩,那么每个压缩包都会携带完整DEFLATE头和尾信息。而对于某些浏览器来说,这些多个完整的压缩包并不能被 识别。所以在java环境中,引入zlib的一个java实现版本:jzlib(http://www.jcraft.com/jzlib/,为本领域普通技术人员的公知常识,在此不再对其进行赘述),jzlib中支持压缩中的flush_mode(jzlib),故本实施方式中可相应地调用jzlib的z_full_flush函数对所述中部数据进行压缩以得到相应的动态数据压缩段。
具体的压缩过程中:处理模块30首先在中部数据(动态数据)的字符串头部加入空字符串后供压缩模块20进行压缩,这时,得到的压缩文件中会包含一个在所述空字符串上形成的压缩头信息;处理模块30进一步将在所述空字符串上形成的压缩头信息删除,以便于进行接着的“数据压缩段的合并”,此部分内容将在下文做详细的阐述。
2)缓存中不存在对应的静态数据压缩段。
这种情况下,表示缓存的数据已经过期,或者服务器启动之后,对该Html页面的请求第一次到来,所以缓存为空。此时,根据本发明的一实施方式:
处理模块30用于首先接收浏览器请求,并根据所述浏览器请求中的http header生成对应的Html页面,再将所述Html页面的静态数据和动态数据剥离,压缩模块20用于将所述静态数据压缩为静态数据压缩段并缓存。通常地,这里利用http header中包含的关键数据,例如user-agent中的关键信息(示范性地:判定需要返回的浏览器是应用于PC还是移动电话)生成对应的Html页面。
这里,静态数据在一次压缩请求中对多个静态完成压缩。为提高效率,本实施方式中,可在一次压缩请求中,执行对同一Html页面数据中的多个分离的静态数据的多次压缩。并且,存储模块40同步对此时压缩而成的静态数据压缩段进行存储,存储的周期可以根据Html的更新情况进行设定,以便在一个周期后,可以对该静态数据压缩段进行更新。
同样类似地以头部数据和尾部数据对应静态数据、中部数据对应动态数据为例对此时动态数据和静态数据的压缩做详细的阐述:
调用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函数对上述的各部分数据进行压缩以得到静态数据压缩段和动态数据压缩段。
进一步地,在本实施方式中,处理模块30还用于:
将所述静态数据压缩段与所述动态数据压缩段按照所述Html页面的原始顺序合并为Html页面压缩数据。
『按照Html页面的原始顺序』是指处理模块30将静态数据压缩段和动态数据压缩段按照字符串的顺序拼装为Html页面压缩数据。此时,由于Html页面上的静态内容已经被预先压缩和缓存,故避免了每次请求服务器都需要进行大量的重复压缩,大大降低了服务器的计算压力。示范性地,这里的动态数据为打点数据。
进一步地,为了使更多浏览器可识别该Html页面压缩数据,在Html页面压缩数据中,是通过一个压缩头信息和一个压缩尾信息将静态数据压缩段和动态数据压缩段封装。
如图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页面压缩数据。
当然,在示范性的一替换的实施方式中,DEFLATE Data B也可以是由压缩模块20调用z_sync_flush函数压缩而成,相应地,在DEFLATE Data B的压缩过程中,处理模块30在其对应的字符串尾部插入空字符串,并在压缩后再将在该空字符串上形成的压缩尾信息删除。如此,同样可以将DEFLATE Data A、DEFLATE Data B、DEFLATE Data C顺序合并成一个完整的Html页面压缩数据。
在本实施方式中,每个静态数据压缩段均包括字典数据,而并非使用第一压缩段的字典数据,以可单独进行解压缩。
最后,处理模块30再将上述的Html页面压缩数据发送至浏览器。在此过程中,配置模块50首先为Html页面压缩数据配置Http response header,以通知浏览器其接收的Html页面压缩数据的压缩格式,处理模块30再将Html页面压缩数据放入response的缓 冲区。缓冲区将压缩Html页面压缩数据再最终返回至浏览器以完成整个Html页面发送至浏览器的过程。
需要说明的是,上述的调取模块10、压缩模块20、处理模块30、存储模块40、和配置模块50都为根据逻辑功能的一种示范性的划分,实际的应用中,可能是由代理服务器、或应用服务器、或代理服务器和应用服务器协同实现上述实施方式中各模块的功能,而上述的各模块也可以相应地被视为共同构成所述代理服务器和应用服务器的至少部分。
综上所述,本发明的Html页面压缩方法及装置可以将Html页面上的静态内容预先压缩,并缓存,当接收到浏览器请求时,可只将Html页面中的动态数据的压缩,并与静态内容合并后返回,如此,避免了每次请求服务器都需要进行大量的压缩,大大降低了服务器的计算压力。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置,装置和模块的具体工作过程,可以参考前述方法实施方式中的对应过程,在此不再赘述。
综上所述,本发明的Html页面压缩方法及装置可以将Html页面上的静态内容预先压缩,并缓存,当接收到浏览器请求时,可只将Html页面中的动态数据的压缩,并与静态内容合并后返回,如此,避免了每次请求服务器都需要进行大量的压缩,大大降低了服务器的计算压力。
在本发明所提供的几个实施方式中,应该理解到,所揭露的装置,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施方式方案的目的。
另外,在本发明各个实施方式中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以2个或2个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)或处理器(processor)执行本发明各个实施方式所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施方式仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施方式对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施方式技术方案的精神和范围。

Claims (20)

  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页面压缩数据的压缩格式。
PCT/CN2016/075942 2015-03-17 2016-03-09 Html页面压缩方法及装置 Ceased WO2016146009A1 (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201510115508.0A CN106033448A (zh) 2015-03-17 2015-03-17 Html页面压缩方法及装置
CN201510115508.0 2015-03-17

Publications (1)

Publication Number Publication Date
WO2016146009A1 true WO2016146009A1 (zh) 2016-09-22

Family

ID=56918334

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2016/075942 Ceased WO2016146009A1 (zh) 2015-03-17 2016-03-09 Html页面压缩方法及装置

Country Status (2)

Country Link
CN (1) CN106033448A (zh)
WO (1) WO2016146009A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115065725A (zh) * 2022-05-12 2022-09-16 北京奇艺世纪科技有限公司 数据处理方法、装置、电子设备及存储介质

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106790662A (zh) * 2017-01-20 2017-05-31 济南浪潮高新科技投资发展有限公司 一种使用关键帧压缩的超文本传输协议数据压缩方法
CN113364508B (zh) * 2021-04-30 2022-08-16 深圳震有科技股份有限公司 一种语音数据的传输控制方法、系统及设备
CN113518088B (zh) * 2021-07-12 2023-07-07 北京百度网讯科技有限公司 数据处理方法、装置、服务器、客户端和介质
CN113612516B (zh) * 2021-07-13 2023-05-12 深圳震有科技股份有限公司 一种卫星通信数据包的压缩测试方法、系统及设备
CN114222093A (zh) * 2021-12-15 2022-03-22 武汉科迪智能环境股份有限公司 控制管理方法、装置、计算机可读存储介质及控制设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7484007B2 (en) * 2002-02-01 2009-01-27 Codekko Inc. System and method for partial data compression and data transfer
CN102298630A (zh) * 2011-08-30 2011-12-28 国电南瑞科技股份有限公司 一种基于线型的过程数据有损压缩方法
CN102375884A (zh) * 2011-10-21 2012-03-14 北京百度网讯科技有限公司 一种用于对页面访问对象进行数据压缩的方法及设备
CN104283777A (zh) * 2013-07-03 2015-01-14 华为技术有限公司 报文压缩的方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7484007B2 (en) * 2002-02-01 2009-01-27 Codekko Inc. System and method for partial data compression and data transfer
CN102298630A (zh) * 2011-08-30 2011-12-28 国电南瑞科技股份有限公司 一种基于线型的过程数据有损压缩方法
CN102375884A (zh) * 2011-10-21 2012-03-14 北京百度网讯科技有限公司 一种用于对页面访问对象进行数据压缩的方法及设备
CN104283777A (zh) * 2013-07-03 2015-01-14 华为技术有限公司 报文压缩的方法和装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115065725A (zh) * 2022-05-12 2022-09-16 北京奇艺世纪科技有限公司 数据处理方法、装置、电子设备及存储介质
CN115065725B (zh) * 2022-05-12 2024-01-12 北京奇艺世纪科技有限公司 数据处理方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN106033448A (zh) 2016-10-19

Similar Documents

Publication Publication Date Title
WO2016146009A1 (zh) Html页面压缩方法及装置
US9582600B1 (en) Cloud browser DOM-based client
US9740791B1 (en) Browser as a service
CN109714406B (zh) 资源描述文件的处理、页面资源的获取方法及设备
WO2017114190A1 (zh) 一种文件上传处理方法及装置
WO2017174026A1 (zh) 一种客户端连接方法及系统
CN112115738A (zh) 一种应用于浏览器端的图像识别方法和装置
CN113992738A (zh) 基于微服务网关的反向代理方法、装置、设备及存储介质
CN111756847A (zh) 网站支持https协议的方法和装置
CN118869845B (zh) 报文数据的处理方法以及相关设备
US20150312313A1 (en) Proxy for modifying http messages to comply with browser
CN115484246A (zh) 页面的加载方法和装置、存储介质及电子设备
US8583829B2 (en) Semantic-based lossy compression
WO2024222790A1 (zh) 适用于空间图像的解码方法及装置
CN114760357A (zh) 一种请求处理方法、装置、计算机设备和存储介质
CN109766347B (zh) 一种数据更新方法、装置、系统、计算机设备及存储介质
CN113542335A (zh) 一种信息共享方法、装置、电子设备及存储介质
WO2018014761A1 (zh) 数据处理方法及装置
CN102067122A (zh) 从位于便携式电子设备中的网页服务器生成文档的方法
CN110545296A (zh) 一种日志数据获取方法、装置及其设备
US10841405B1 (en) Data compression of table rows
CN107092529B (zh) Olap服务方法、装置及系统
CN110889054A (zh) 一种前后端分离Web系统的在线预览的方法及装置
US11086822B1 (en) Application-based compression
CN103618777A (zh) 客户端调用的方法及设备

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16764190

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16764190

Country of ref document: EP

Kind code of ref document: A1