CN101088084A - 可再用压缩对象 - Google Patents

可再用压缩对象 Download PDF

Info

Publication number
CN101088084A
CN101088084A CN 200480041984 CN200480041984A CN101088084A CN 101088084 A CN101088084 A CN 101088084A CN 200480041984 CN200480041984 CN 200480041984 CN 200480041984 A CN200480041984 A CN 200480041984A CN 101088084 A CN101088084 A CN 101088084A
Authority
CN
China
Prior art keywords
vco
compressed
request
define
compression
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.)
Pending
Application number
CN 200480041984
Other languages
English (en)
Inventor
P·弗玛
K·加勒特
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.)
VENTURI WIRELESS Inc
Original Assignee
VENTURI WIRELESS Inc
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 VENTURI WIRELESS Inc filed Critical VENTURI WIRELESS Inc
Publication of CN101088084A publication Critical patent/CN101088084A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种存储和访问压缩对象供再使用的方法和装置。压缩数据,例如从Web接收的对象,被写回到高速缓冲存储器中。这允许根据压缩设置以多个对象尺寸存储同一对象。只要对象已被压缩过,就不必再对其进行压缩。本发明还规定压缩对象的头部,来实现附加压缩,例如,针对对象的第二次请求实现的附加压缩,如果该第二次请求是通过客户机被接收到的话。在非客户机模式下,根本不必压缩头部。

Description

可再用压缩对象
技术领域
本发明涉及一种保存压缩对象的方法。更具体而言,本发明涉及一种保存压缩对象供以后检索的方法。
背景技术
用电子形式表示信息,例如包括Web页面或部分Web页面的HTML信息,的对象经常是被高速缓存的。这使对象可以被快速检索到,而不需要从Web上重新装入该对象。这样的对象通常构成提供给无线设备的内容的一个重要部分,所述无线设备如配备有浏览器的手机等。然而,由于Web与允许无线设备同Web网关通信的无线通信信道的带宽不同,所以在经由无线通信信道将对象发送给无线设备之前必须先压缩对象。目前的做法是将整个对象存储在高速缓冲存储器中。当对象被再次请求时,必须从高速缓冲存储器获取整个对象,然后再压缩对象,因而耗用相当多的系统资源。参看图1和图2,图1为显示未使用预取(prefetch)操作的对象请求流程的示意框图,其中流程的顺序用字母数字标号A1->A6连同其相应箭头表示;图2为显示对象请求流程的示意框图。在图1和图2的每个图中,客户机11通过诸如HTTP之类的传输机制经由网关15向存储于服务器17中的对象请求对象。对象被检索到后,紧接着由压缩器13进行压缩,然后经由网关被返回给请求客户机。图2示出了启动预取操作的情形。这样,对象事先已被高速缓存,并且可以在本地被检索到以供压缩。
当一个对象被以不同水平的分辨率请求时,会产生另一个问题。目前,在每次对象被请求时,都必须从高速缓冲存储器检索对象(或者从Web检索对象,要是该对象未被高速缓存的话),此外还必须针对目标设备采用合适的压缩率压缩对象。这意味着,在特定对象每次被压缩时其分辨率均可能不同的情况下,必须反复压缩对象。
最后,对象可能针对各种目标设备而被请求,其中要求对象具有不同的格式。例如,在一个平台上可能要求对象采用HTML,而另一个平台可能改为支持ASCII。因此,可能必须将对象从其原来的格式转化成目标平台格式,然后在每次对象被请求时压缩对象。
上述反复压缩和格式转化操作大大增加了对系统的缓冲区及处理要求。
提供一种存储和访问压缩对象供再使用的方法和装置将是有利的。如果上述方法和装置虑及以若干种格式和/或分辨率水平中的一种或多种来高速缓存对象也将是有利的。
发明内容
本发明提供一种存储和访问压缩对象供再使用的方法和装置。压缩数据,例如从Web接收的对象,被写回到高速缓冲存储器中。这允许根据压缩设置以多个对象尺寸存储同一对象。只要对象已被压缩过,就不必再对其进行压缩。本发明还规定压缩对象的头部来实现附加压缩,例如,针对对象的第二次请求实现的附加压缩,如果该第二次请求是通过客户机被接收到的话。在非客户机(Clientless)模式下,根本不必压缩头部。
附图说明
图1为显示未使用压缩对象和预取操作的对象请求流程的示意框图;
图2为显示未使用压缩对象的对象请求流程的示意框图;
图3为显示根据本发明第一实施方案的对象请求流程的示意框图;
图4为显示根据本发明第二实施方案的对象请求流程的示意框图;
图5为显示根据本发明第三实施方案的对象请求流程的示意框图;
图6为描述请求流程的流程图;
图7为描述预取侧请求流程的流程图;
图8为描述CO不存在时的请求流程的流程图;和
图9为描述CO存在时的请求流程的流程图。
具体实施方式
本发明提供一种存储和访问压缩对象供再使用的方法和装置。压缩数据,例如从Web接收的对象,被写回到高速缓冲存储器中。这允许根据压缩设置以多个对象尺寸存储同一对象。只要对象已被压缩过,就不必再对其进行压缩。本发明还规定压缩对象的头部来实现附加压缩,例如,针对对象的第二次请求实现的附加压缩,如果该第二次请求是通过客户机被接收到的话。在非客户机模式下,根本不必压缩头部。
定义
以下助记符在本文件中用于表示其关联含义:
VS:指服务器。
VC:指客户机。
VCO:指用来存储压缩对象的数据结构。
Prefetch:指通过本发明被增强的一种基础数据结构。
COURL:指被修改过的具有VCO扩展名的URL。
NMURL:指发送给高速缓冲存储器的常规URL。
CP:指用于处理COURL的高速缓冲存储器代理。
描述
在检索对象时,对象必须经过压缩器。为压缩对象,CPU受到相当高强度的使用。对同一对象进行同样的压缩是耗时、缓慢的。本发明源于如下观察,即,将对象压缩一次、然后将其存储到高速缓冲存储器中会避免过多地使用CPU。本发明的优选实施方案将压缩对象保存在高速缓冲存储器中。当接收到针对特定对象的新请求时,可直接从高速缓冲存储器检索到该对象并将其发送给客户机。
在当前实施方案中,将原始对象保存在高速缓冲存储器中。在接收到整个对象后,压缩数据,但不压缩头部。将压缩对象(VCO)保存到高速缓冲存储器中。在内部保存足够的信息来识别所使用的压缩方法。这种方法的一个优点是压缩对象被保存在高速缓冲存储器中供以后使用。当针对上述对象的请求又产生时,将URL转化成在一个内部表维护的相应的COURL。其后,可以直接从高速缓冲存储器检索到压缩数据。以这种方式存储在高速缓冲存储器中的数据耗用较少的缓冲区,因为它们是压缩过的。该方法还耗用较少的CPU,并且更快,因为将数据从高速缓冲存储器传送至服务器的时间更短,即,要传送的数据量更小,并且不需要进行压缩。当VCO被请求时,可以较快地压缩头部,因为头部的尺寸比构成对象本身的数据的尺寸小得多。然后,将VCO传送给客户机。
上述描述最好参见图3-5,其中图3为显示根据本发明第一实施方案的对象请求流程的示意框图;图4为显示根据本发明第二实施方案的对象请求流程的示意框图;图5为显示根据本发明第三实施方案的对象请求流程的示意框图。
现在参照图3,客户机请求一个对象,例如Taj.gif。经由网关31访问该对象,其中网关31具体体现本发明。对象可以作为预取操作的结果,是高速缓存过的33,或者对象可以在执行请求时被取出。在对象第一次被请求时,将对象路由至压缩器13,然后将其提供给客户机,并以其压缩形式将其存储在高速缓冲存储器中,例如存储为Taj.gif.vco。对象的头部与对象分离以非压缩形式,例如Vco.html被维护,以使对象在不需要被解压缩的情况下易于定位。对象名称中可以包含各种元数据,如格式、分辨率等。图4示出了本发明的一个实施方案,其中对象被取出、压缩、并被存储在高速缓冲存储器中,并且其中存在多种格式的对象,例如gif和PNG格式的对象,图5示出了进一步的情形,其中对象已经在高速缓冲存储器中,并且仅检索到其压缩状态。
功能性
以下是其他模块所使用的外部函数。
*int http_a_prefetch(int wi,int flags);
*int http_vbuf_to_url(uchar*url,int bidx,int max_len);
*int vco_process_courl_request(int wi);
*int vco_process_http_request(int wi);
*int vco_set_compression_info(int wi);
*int fwd_vco_a_data(int wi,int idx,int ta_close,int flags);
*void vco_get_request_capability(int wi);
要求
VCO的主要交互在HTTP请求、预取请求以及压缩器之间。
可用性
服务器上的图形用户界面(GUI)具有被配置特性。压缩页面是GUI上的主要页面。它具有针对Gif2Png、J2k的配置。它还具有弹出窗口屏蔽(pop-up blocking)和有损耗HTML过滤器。上述这些由VCO使用,以通过能力函数(capability function)将它们转化成压缩器标记。
GUI
   GIF to PNG Conversion:[Image](GIF-PNG转化:【图像】)
   JPEG 2000 Support:[Image](JPEG 2000支持:【图像】)
   Send Original Images on Reload(重新装入时发送原始图像)
   Client/Server:[Image](客户机/服务器:【图像】)
   ClientLess:[Image](非客户机:【图像】)
以下为用于配置VCO特性的GUI:
Caching Compressed Object:[Image](高速缓存压缩对象:【图像】)
This is a checkbox which can be disabled or enabled.(这是一个复选框,可被禁止或允许。)
设计说明
请求流程
图6为描述请求流程的流程图。该请求来自客户机(VC)。我们需要检查VCO以查看该请求是否存在。我们将由预取产生的请求与由HTTP产生的请求区分开。
请求由预取产生
在这种情况下,压缩器解析html基页,然后发出请求来请求页面中嵌入的对象。在预取侧,请求流程如图7所示。
预取
预取请求由VS发起。如果对象未存在于VCO中,则我们建立一个具有标准头部的请求。然后,我们将该请求发送给高速缓冲存储器。高速缓冲存储器将该请求视为一个常规请求(A1),并从服务器或原始服务器(Origin Server)完成该请求。当响应(A2)返回时,我们将数据发送给压缩器,同时携带标记通知压缩器压缩该数据而非响应头部。当压缩器发回压缩对象时,我们将压缩对象保存在临时缓冲区中。压缩器还告知我们原始信息和压缩信息是何时获得的。然后,压缩器在数据结构中设置应用程序标识符(Application Identified)。那时,VS发送COURL(A3)给高速缓冲存储器,这是由VS发起的另一个请求。当高速缓冲存储器接收到该请求时,它能直接从高速缓冲存储器完成该请求。当响应(A4)由VS获得时,中断连接。
如果服务器没有该数据(第一次请求或者该数据从磁盘被删除),则它发回一个请求给VS,在高速缓冲存储器代理(A5)的端口8009上请求COURL。当VS获得该请求时,它将该请求与之前的请求匹配,然后将这两个请求联系在一起。自A3的套接字连接到A2,A3关闭。然后,数据流向A2,然后此响应被中断。因而,高速缓冲存储器应当将该数据存储到其中。
HTTP
请求由HTTP产生。在这种情况下,该请求正由浏览器通过VC发起或者正由浏览器直接发起。无论如何,我们不能中断连接,因而与预取请求不同。这种情况下的该流程取决于对象是否存在于VCO中。
在此期间,我们将原始信息和压缩信息保存在各个相关的存储桶中。最初,我们不知道压缩信息看起来像什么。
如果CO不存在
图8为描述CO不存在时的请求流程的流程图。
如果CO存在
图9为描述CO存在时的请求流程的流程图。在这种情况下,我们具有针对同一对象的后续请求。
服务器请求
如果服务器有压缩对象,则它会立刻从高速缓冲存储器返回该压缩对象。这正是VCO的实际好处所在。我们将把MCP用于此目的。
当VCO请求通过MCP基于COURL到来时,我们知道VCO中有怎样的入口,并且还有扩展名为我们提供压缩信息。这使我们得以将请求相互关联起来。我们应基于这些值设置hinfo,然后发出一个NMURL请求。
外部高速缓冲存储器支持
高速缓冲存储器也可工作在外部模式下。当服务器连接到外部高速缓冲存储器时,我们发送HTTP请求给该高速缓冲存储器作为代理请求。于是,服务器充当HTTP服务器,外部高速缓冲存储器充当HTTP客户机。
外部高速缓冲存储器能够在请求以VCO扩展名结尾的情况下为我们发回请求给服务器,然后可确定外部高速缓冲存储器是否能利用该特性。该高速缓冲存储器使用能发起请求给我们的正则表达式。任何其他高速缓冲存储器都必须支持这种配置。其余流程应该以与此类似的方式发生,并且没有我们须注意的特殊要求。
内部结构
文件格式
    app.xml
    <TABLE NAME=″HttpConfigurationTable″VERSION=″1.0″>
            <COL name=″CompressedObjectEnabled″num=″12″val=″0″/>
    </TABLE>
    <TABLE NAME=″ApplicationMethodTable″VERSION=″0.0″>
            <ROW>
                  <COL name=″Name″num=″1″val=″HTTPvco″/>
                  <COL name=″ServerApplicationMethodName″num=″2″ val=″″/>
                  <COL name=″ApplicationFunctionName″num=″3″val=″HTTP″/>
                  <COL name=″PacketMethodName″num=″4″val=″EOF″/>
                  <COL name=″timeout″num=″5″val=″0″/>
                  <COL name=″ForwardChar″num=″6″val=″″/>
                  <COL name=″MinCompBytecnt″num=″7″val=″200″/>
                  <COL name=″CompressionMethodName″num=″8″val=″Http″/>
                  <COL name=″ZLibDictName″num=″9″val=″Default″/>
                  <COL name=″Show″num=″10″val=″0″/>
            </ROW>
    </TABLE>
    <TABLE NAME=″ProxyMethodTable″VERSION=″0.0″>
            <ROW>
                  <COL name=″MethodName″num=″1″val=″HttpVco″/>
                  <COL name=″ProxyFunctionName″num=″2″val=″HTTPvco″/>
                  <COL name=″ApplicationMethodName″num=″3″val=″HTTP″/>
                  <COL name=″Port″num=″4″val=″800″/>
                  <COL name=″UseDefaultDestination″num=″5″val=″0″/>
            </ROW>
    </TABLE>
    <TABLE NAME=″MasterProxyTable″VERSION=″0.0″>
            <ROW>
                  <COL name=″ProxyMethodName″num=″1″val=″Http Vco″/>
                  <COL name=″StatsName″num=″2″val=″OTHER″/>
                  <COL name=″Flags″num=″3″val=″1″/>
                  <COL name=″ProxyHost″num=″4″val″127.0.0.1″/>
                  <COL name=″ProxyPort″num=″5″val=″8009″/>
                  <COL name=″DestHost″num=″6″val=″″/>
                  <COL name=″DestPort″num=″7″val=″0″/>
            </ROW>
    </TABLE>
有另外两个表已移到app.xml中,app.xml具有针对Gif2Png、PPM、J2k的配置。此外,已添加了弹出窗口屏蔽和LossyHtml字段。上述这些由VCO使用,以基于配置设置压缩器标记。
    <TABLE NAME=″SvrCompCfgTable″VERSION=″1.0″>
            <ROW>
                  <COL name=″Gif2Png″num=″1″val=″1″/>
                  <COL name=″PPM″num=″2″val=″1″/>
                  <COL name=″J2k″num=″3″val=″1″/>
            </ROW>
    </TABLE>
    <TABLE NAME=″SvrCompLevelTable″VERSION=″1.0″>
            <ROW>
                  <COL name=″Pop-upBlocking0″num=″1″val=″0″/>
                  <COL name=″Pop-upBlocking1″num=″2″val=″0″/>
                  <COL name=″Pop-upBlocking2″num=″3″val=″0″/>
                  <COL name=″Pop-upBlocking3″num=″4″val=″0″/>
                  <COL name=″Pop-upBlocking4″num=″5″val=″0″/>
                  <COL name=″LossyHtml0″num=″6″val=″0″/>
                  <COL name=″LossyHtml1″num=″7″val=″0″/>
                  <COL name=″LossyHtml2″num=″8″val=″0″/>
                  <COL name=″LossyHtml3″num=″9″val=″0″/>
                  <COL name=″LossyHtml4″num=″10″val=″0″/>
            </ROW>
    </TABLE>
层4是内部层,并且因为它用于控制-刷新机制,所以在xml中应当总是关闭。
数据结构
    #define MAX_VCO_COMP_INFO                              42
    ∥Original information
    typedef struct{
        ulong type;      ∥what type of object it is
        ulong size;      ∥size in bytes ofthe actual object
        ulong pixels;    ∥size in pixels ofthe actual object
        ulong level;     ∥level for the original object-needs more detail
    }VCO_ORIGINALINFO;
    ∥Compressed information for each bucket
    typedef struct{
        ulong entry_valid;  ∥is this entry valid
        ulong comp_control_flags;  ∥control_flags for completeness
    ulong comp_flags;  ∥comp flags that need to passed to the compressor
    ulong comp_level_dict;  ∥which level or dictionary to be used
    ulong comp_size;    ∥comp size
    ulong final_size;    ∥final size ofthe object
    ulong original_comp_flags;  ∥original flags
    int wi;                  ∥work item for saving VCO to SQUID
}  VCO_COMPRESSEDINFO;
typedef struct
{
    int         id;                    ∥index of the record
    int         state;                 ∥is it free or used
    int         hash_index;            ∥hash bucket that it belongs to
    int         hit_count;             ∥number of hits that this has got
    int         pf_index_next;         ∥index of next record in hash list
    int         pf_index_prev;         ∥index of prey record in hash list
    int         pf_oldest_next;        ∥next oldest in the last acc.order
    int         pf_oldest_prev;        ∥prev oldest in the last acc.order
    int         state_flag;            ∥track the state of the record
    VCO_ORIGINALINFO original_info;    ∥original information of object
    VCO_COMPRESSEDINFO comp_info[MAX_VCO_COMP_INFO];∥compression info
    struct  timeval   last_accessed_time;  ∥last accessed time
    int               port;                ∥port of the request
    char              host[HOST_SZ];       ∥host of the request
    uchar             url[PF_URL_SIZE+1];  ∥URL object in the VCO
}VCORcrdType;
目前定义了6种压缩器类型:
#define  COMP_TYPE_UNKNOWN             0
#define  COMP_TYPE_NONE                1
#define  COMP_TYPE_GIF                 2
#define  COMP_TYPE_JPG                 3
#define  COMP_TYPE_ZLIB                4
#define  COMP_TYPE_HTML                5
Unknown(未知类型)用于我们不知道对象是哪种类型之时。压缩器看到响应后,它就可以确定类型是什么,并相应地设置类型。
下面定义压缩器控制标记。它们表示VentS在发送出请求之前所设置的对压缩器的控制,以使压缩器知道如何处理响应。对于我们知道其类型同时也知道应该设置什么标记的对象,使用force标记。
#define  VCO_CC_FORCE            0x00000001
#define  VC0_CC_COMP_HDR         0x00000002
#define  VCO_CC_COMP_BODY        0x00000004
#define  VCO_CC_ZLIB_HDR         0x00000008
#define  VCO_CC_VALID            0x00000010
#define  VCO_CC_PREFETCH         0x00000100
#define  VCO_CC_HEAD             0x00000200
压缩器hdr标记和压缩器body标记用于使压缩器知道响应的哪部分需要进行压缩。ZLIB头部也被相应地设置。VALID标记用作从压缩器发送至VentS的信号,作为手段让VentS知道返回的值有效。PREFETCH被设置来表明预取特性已被启动并且HTML中的对象可被预取。HEAD表示头部请求,因此其中没有主体。
以下是从VentS发送给压缩器以及再返回的压缩器标记。当VentS设置这些值时,它着眼于请求的能力并确定需要设置这些标记中的哪些标记。当压缩器设置VALID标记时,还表明它对对象进行了什么操作,以便我们可以作出适当的反应。
#define  VCO_CF_STDDICT          0x00000001
#define  VCO_CF_LDDICT           0x00000002
#define  VCO_CF_PPM              0x00000004
#define  VCO_CF_DEFLATE          0x00000008
#define  VCO_CF_GZIP             0x00000010
#define  VCO_CF_GIF2PNG          0x00000020
#define  VCO_CF_POP-UP_BLOCK     0x00000040
#define  VCO_CF_LOSSY_HTML       0x00000080
#define  VCO_CF_CHUNK            0x00000100
#define  VCO_CF_J2K              0x00000200
这些标记从压缩器设置。这些标记将由VCO使用,以将它们送回:
#define  VCO_CF_ANIMATE          0x00001000
#define  VCO_CF_LOSSLESS         0x00002000
#define  VCO_CF_LOSSY            0x00004000
对于Gif图像,每层我们可以选择带块(chunking)的gif、gif2png。因为有5层要考虑,所以,潜在地,有以下组合是允许的:
#define  VCO_ST_GIF_NONE                            0
#define  VCO_ST_GIF_L0                              1
#define  VCO_ST_GIF_L1                              2
#define  VCO_ST_GIF_L2                              3
#define  VCO_ST_GIF_L3                              4
#define  VCO_ST_GIF_L4                              5
#define  VCO_ST_GIF_CHUNK_L0                        6
#define  VCO_ST_GIF_CHUNK_L1                        7
#define  VCO_ST_GIF_CHUNK_L2                        8
#define  VCO_ST_GIF_CHUNK_L3                        9
#define  VCO_ST_GIF_CHUNK_L4                  10
#define  VCO_ST_GIF_PNG_L0                    11
#define  VCO_ST_GIF_PNG_L1                    12
#define  VCO_ST_GIF_PNG_L2                    13
#define  VCO_ST_GIF_PNG_L3                    14
#define  VCO_ST_GIF_PNG_L4                    15
#define  VCO_ST_GIF_PNG_CHUNK_L0              16
#define  VCO_ST_GIF_PNG_CHUNK_L1              17
#define  VCO_ST_GIF_PNG_CHUNK_L2              18
#define  VCO_ST_GIF_PNG_CHUNK_L3              19
#define  VCO_ST_GIF_PNG CHUNK_L4              20
#define  VCO_ST_GIF_MAX_BUCKET
VCO_ST_GIF_PNG_CHUNK_L4+1
对于JPEG图像,每层我们可以选择jpeg、j2k、块(chunking):
#define  VCO_ST_JPG_NONE                            0
#define  VCO_ST_JPG_L0                              1
#define  VCO_ST_JPG_L1                              2
#define  VCO_ST_JPG_L2                              3
#define  VCO_ST_JPG_L3                              4
#define  VCO_ST_JPG_L4                              5
#define  VCO_ST_JPG_CHUNK_L0                        6
#define  VCO_ST_JPG_CHUNK_L1                        7
#define  VCO_ST_JPG_CHUNK_L2                        8
#define  VCO_ST_JPG CHUNK_L3                        9
#define  VCO_ST_JPG CHUNK_L4                        10
#define  VCO_ST_JPG_J2K_L0                          11
#define  VCO_ST_JPG_J2K_L1                          12
#define  VCO_ST_JPG_J2K_L2                          13
#define  VCO_ST_JPG_J2K_L3                          14
#define  VCO_ST_JPG_J2K_L4                          15
#define  VCO_ST_JPG_J2K_CHUNK_L0                    16
#define  VCO_ST_JPG_J2K_CHUNK_L1                    17
#define  VCO_ST_JPG_J2K_CHUNK_L2                    18
#define  VCO_ST_JPG_J2K_CHUNK_L3                    19
#define  VCO_ST_JPG_J2K_CHUNK_L4                    20
#define  VCO_ST_JPG_MAX_BUCKET
VCO_ST_JPG_J2K_CHUNK_L4+1
对于ZLIB类型,我们使用以下子类型。这些子类型用于5种不同的类型:
-PPM
-zlib with standard dictionary(具有标准字典的zlib)
-zlib with loadable dictionary(具有可装入字典的zlib)
-DEFLATE  (收缩)
-GZIP
然后,你可以选择带块(chunking)或不带块(chunking)。这产生以下组合。
#define  VCO_ST_ZLIB_NONE                          0
#define  VCO_ST_PPM                                1
#define  VCO_ST_STD_DICT                           2
#define  VCO_ST_LD_DICT                            3
#define  VCO_ST_DEFLATE                            4
#define  VCO_ST_GZIP                               5
#define  VCO_ST_PPM_CHUNK                          6
#define  VCO_ST_STD_DICT_CHUNK                     7
#define  VCO_ST_LD_DICT_CHUNK                      8
#define  VCO_ST_DEFLATE_CHUNK                      9
#define  VCO_ST_GZIP_CHUNK                         10
对于HTML类型:
相比其他ZLIb选项,这种类型被当作一种特殊类型加以对待。它具有最多的选项。
有以下子类型:STD字典、可装入字典、PPM、Deflate(收缩)和GZIP。
对于每种子类型,可以选择块(chunking)、有损耗HTML和弹出窗口屏蔽。因此,有5*8=40种存储桶组合供操纵。这得到以下存储桶组合。
#define  VCO_ST_HTML_NONE                              0
#define  VCO_ST_STD_DICT_NLHNPB                        1
#define  VCO_ST_STD_DICT_NLHPB                         2
#define  VCO_ST_STD_DICT_LHNPB                         3
#define  VCO_ST_STD_DICT_LHPB                          4
#define  VCO_ST_STD_DICT_CHUNK_NLHNPB                  5
#define  VCO_ST_STD_DICT_CHUNK_NLHPB                   6
#define  VCO_ST_STD_DICT_CHUNK_LHNPB                   7
#define  VCO_ST_STD_DICT_CHUNK_LHPB                    8
#define  VCO_ST_LD_DICT_NLHNPB                         9
#define  VCO_ST_LD_DICT_NLHPB                         10
#define  VCO_ST_LD_DICT_LHNPB                    11
#define  VCO_ST_LD_DICT_LHPB                     12
#define  VCO_ST_LD_DICT_CHUNK_NLHNPB             13
#define  VCO_ST_LD DICT_CHUNK_NLHPB              14
#define  VCO_ST_LD_DICT_CHUNK_LHNPB              15
#define  VCO_ST_LD_DICT_CHUNK_LHPB               16
#define  VCO_ST_PPM_NLHNPB                       17
#define  VCO_ST_PPM_NLHPB                        18
#define  VCO_ST_PPM_LHNPB                        19
#define  VCO_ST_PPM_LHPB                         20
#define  VCO_ST_PPM_CHUNK_NLHNPB                 21
#define  VCO_ST_PPM_CHUNK_NLHPB                  22
#define  VCO_ST_PPM_CHUNK_LHNPB                  23
#define  VCO_ST_PPM_CHUNK_LHPB                   24
#define  VCO_ST_DEF_NLHNPB                       25
#define  VCO_ST_DEF_NLHPB                        26
#define  VCO_ST_DEF_LHNPB                        27
#define  VCO_ST_DEF_LHPB                         28
#define  VCO_ST_DEF_CHUNK_NLHNPB                 29
#define  VCO_ST_DEF_CHUNK_NLHPB                  30
#define  VCO_ST_DEF_CHUNK_LHNPB                  31
#define  VCO_ST_DEF_CHUNK_LHPB                   32
#define  VCO_ST_GZIP_NLHNPB                      33
#define  VCO_ST_GZIP_NLHPB                       34
#define  VCO_ST_GZIP_LHNPB                       35
#define  VCO_ST_GZIP_LHPB                        36
#define  VCO_ST_GZIP_CHUNK_NLHNPB                37
#define  VCO_ST_GZIP_CHUNK_NLHPB                 38
#define  VCO_ST_GZIP_CHUNK_LHNPB                 39
#define  VCO_ST_GZIP_CHUNK_LHPB                  40
#define  VCO_ST_GZIP_MAX_BUCKET
VCO_ST_GZIP_CHUNK_LHPB+1
以下是用来将信息从VentS传送给压缩器或者从压缩器传送信息的hinfo结构。
typedef struct
{
    ulong type;                /*type of the object*/
    ulong original_size;
    ulong original_pixels;
    ulong original_level;
    ulong comp_control_flags;
    ulong comp_flags;         /*compressor/APP flags*/
    ulong compressed_size;
    ulong comp_level_dict;
    ulong final_size;
    ulong original_comp_flags;    /*Save these for later*/
}HdCompInfo;
typedef struct
{
    int    port;                    /*saves port from header*/
    int    port1;                   /*holds port from transparent proxy*/
    int    flags;                   /*HS_values*/
    int    encoding;                /*HCE_values*/
    int    hlength;                 /*header length*/
    int    clength;                 /*Content-Length*/
    int    slength;                 /*active scratch buffer size*/
    int    state;                   /*lexer state*/
    int    ins;
    int    end;                     /*byte count to the end of current file*/
    struct in_addr src_addr;        /*address of client or user agent*/
    DRcrd data;                     /*modified data stream*/
    DRcrd out;                      /*request header extracted from data steam*/
    DRcrd url;                      /*base url extracted from data steam*/
    HdCompInfo compInfo;            /*compression information*/
    uchar host[HOST_SZ];            /*host name string from authority*/
    uchar host1[HOST_SZ];           /*host name string from Host:field*/
    uchar userinfo[HOST_SZ];        /*user information string*/
    uchar add[HOST_SZ];             /*data to add at the end ofthe header*/
    uchar schema[SCHEMA_LEN];       /*schema for the request*/
    uchar vco_url_extension[32];    /*VCO_COURL_EXTENSION_LEN*/
    uchar scratch[SCRATCHSZ];       /*scratch memory area*/
}HdInfo;
函数描述
这部分稍微详细地描述本发明的本优选实施方案所执行的代码。
VCO的内部函数
*static int vco_get_courl_extension(int wi,uchar*co_extension)
该co url extension(courl扩展名)具有以下格式:.vco_<type%lu>_<comp_flags%lx>_<lddict%lu>_vco。
服务器最后被配置支持该_vco。它将上述请求发送给高速缓冲存储器代理(发回给VentS)。
服务器访问日志中的请求有点类似于:
1067672272.136           22 127.0.0.1 TCP_MISS/200 541 GET
http:∥www.employees.org/~pradeep/vco.html.Vco_5_8_0_vco
DEFAULT_PARENT/127.0.0.1  text/html
1067673025.244      2127.0.0.1 TCP_MEM_HIT/200 3452 GET
http:∥www.employees.org/~pradeep/images/feedback.gif.vco
_2_5020_2_vco-
NONE/-image/gif
*static int vco_get_ci_from_courl_extension
(uchar*co_extension,ulong*type,ulong*comp_flags,ulong*ld_dict)
该函数获取CO extension(CO扩展名)作为输入,返回type、comp_flags和ld_dict。
*static void vco_update_prefetch_record(int wi)
该函数用来在预取请求或VCO预取请求完成时更新预取记录。
*static int get_compression_index(int wi,int*cidx)
该函数获得我们需用以查看存在哪些压缩值的存储桶。
*static int vco_set_hinfo_by_record(int wi,int cidx)
该函数从VCO表中的特定存储桶中获取信息,并基于该信息设置hinfo。这用于后续请求,对于该后续请求我们可使用来自先前已完成的请求所使用的标记。
*static void vco_set_other_buckets(int wi,int cidx)
当我们决定设置其他具有相同特性的存储桶时,调用该函数。
以下是对存储桶的简要描述。以ZLIB型对象为例。
    PPM     LDDICT     STDDICT     None     Deflate     GZIP
 PPM     x     x     x     x
 LDDICT     x     x     x
 STDDICT     x     x
 DEFLATE     x     x
 GZIP     x     x
左手栏为我们发送给压缩器作为我们支持的标记。其余栏为压缩器想要设置上述压缩信息时所设置的值。于是,有带块(chunking)的组合和不带块(chunking)的组合。
假设针对某对象,我们发送如下压缩标记给压缩器:
        comp info:original_type=00000xc 0x7138030
0x7138
        compressor flags    VCO_CF_DEFLATE
VCO_CF_GZIP
        VCO_CF_GIF2PNG VCO_CF_CHUNK VCO_CF_ANIMATE
            VCO_CF_LOSSLESS VCO_CF_LOSSY
    compressor control flags VCO_CC_COMP_BODY VCO_CC_ZLIB_HDR
当压缩器携带有效标记返回时,
        comp info:original_type=50000x1c0x80000x7138
        compressor flags          VCO_CF_DEFLATE
        compressor control flags VCO_CC_COMP_BODY VCO_CC_ZLIB_HDR
                VCO_CC_VALID
因为我们知道类型是5(HTML),所以我们可以确定该请求具有存储桶29.VCO_ST_DEF_CHUNK_NLHNPB。这表示它是一个deflate、支持信息块(chunked supported)、无有损耗html、无弹出窗口屏蔽的桶。
现在问题在于是否有任何其他可以装满该信息的存储桶,以便我们可以同样地对那些存储桶进行VCO。结果表明VCO_ST_DEF_NLHNPB是另一个可加以使用的存储桶(25)。这具有类似的特性,即,它是deflate,并且未设置有损耗html和弹出窗口屏蔽。仅有的区别在于未设置块(chunking)。但是,压缩器在压缩对象时不设置块(chunking)位。我们也可以使用该存储桶。这样,如果我们获得一个HTTP/1.0请求(无chunking),则我们仍然可为该请求服务。在有些情况下,同样可能有多种组合。这样,VCO可以从结果中获得最大利益。对于其他类型的对象,可进行相同的使用。
*static void vco_copy_cidx_new(int wi,int cidx,int cidx_new)
这是一个将存储桶信息从旧索引(cidx)复制到新索引(cidx_new)的实用函数。这也由vco_set_other_buckets用来为其他存储桶设置参数。
*static void print_compression_info(HdCompInfo*comp_info)
这是以更易读取的方式打印压缩信息的内容的实用调试函数。它通过定义:#define VCO_PRINT 9∥change to 100 to be off(变为100以关闭)加以控制。
外部函数
*int vco_process_http_request(int wi)
针对从非客户机用户或客户机用户进来的HTTP请求调用该函数。一旦建立连接且我们需要发出请求,我们就调用该函数。该函数的目的是确定我们将如何处理请求。不论是否有VCO或预取,我们都需要设置压缩器标记。
输出:
-1:错误,不能处理请求
0:正确
1:需再调用解析程序来添加扩展名
它在hinfo结构中设置上述值。它还确定这是否是它第一次检查预取记录表(VCO表),然后确定我们是否需要将这转化成VCO URL请求。
*int vco_process_courl_request(int wi)
当我们想处理经由高速缓冲存储器代理端口从服务器进来的高速缓冲存储器代理请求时,调用该函数。它解析扩展名,获得它要使用的压缩信息。对于该请求,因为它将转到服务器上,所以应只压缩主体。在预取的情形下,存在如下可能性,即我们从使服务器发送请求给我们的先前连接中获得wiOld数据。在这种情况下,我们只是将两个请求联系起来,然后我们的工作就完成了。如果旧请求没闲着,则我们先将该请求转化成原始URL,然后将其发出。
*int vco_set_compression_info(int wi)
当压缩器有压缩信息时,调用该函数。它在hinfo结构中设置值,并在高速缓冲存储器控制标记中设置VALID标记。这向VentS表明,信息已成为可利用的。该函数的目的是针对请求在存储桶中设置压缩信息。如果原始信息未被设置,则该函数设置原始类型、大小和层。然后,该函数获得其感兴趣的存储桶,并为comp_flags、comp_control_flags和其他参数设置值。然后,该函数继续处理,设置其他可能具有相同特性的存储桶。
*void vco_get_request_capability(int wi)
该函数用来获取请求的性能。这通过以下三种途径获得:
1.服务器配置:服务器确定所设置的一些标记。
2.客户机能力。
3.请求能力。
压缩器标记基于以上方式设置。第一次我们不知道请求是什么类型的,于是我们将compinfo字段设置为unknown(未知)。然后,我们需要设置压缩器标记。下面是对各种标记的简要描述。
压缩器标记     描述
VCO_CF_STDDICT   该压缩器标记表示客户机能够处理标准字典。这基于rcp->status中的AG_ZLIB设置。
VCO_CF_LDDICT   该压缩器标记表示客户机能够处理可装入字典。这基于rcp->status中的AG_LDDICT设置。这源于客户机能力。
VCO_CF_PPM   当客户机能够执行PPM压缩方法时,设置该压缩器标记。它基于rcp->status中的AG_PPM以及服务器SvrCompCfg.ppmd。该配置参数位于服务器上的app.xml中,并且总是打开的。
VCO_CF_DEFLATE   当我们处于非客户机模式下、编码为HCE_DEFLATE、并且HttpCfg.ss_comp==1或HttpCfg.ss_comp==3时,设置该标记。如果我们正在处理一个较旧版本的Netscape,则该标记被重置。
VCO_CF_GZIP   当我们处于非客户机模式下、编码为HCE_GZIP、并且HttpCfg.ss_comp==1或HttpCfg.ss_comp==2时,设置该标记。如果我们正在处理一个较旧版本的Netscape,则该标记被重置。
VCO_CF_GIF2PNG   当Gif2PNG(SvrCompCfg.gif2png)被允许且浏览器支持gif2png转化(它不是HS_BADIE或VCO_CF_GIF2PNG)时,设置该标记。
VCO_CF_POP-UP_BLOCK   当压缩页面上的弹出窗口屏蔽被允许时,设置该标记。
  当压缩页面上的有损耗html被允许时,设
VCO_CF_LOSSY_HTML 置该标记。
VCO_CF_CHUNK 当浏览器能够理解信息块(chunk)数据时,设置该标记。这真正地意味着请求为HS_HTTP1_1。
VCO_CF_J2K 当服务器已由J2K允许并且客户机能力表明正支持J2K时,设置该标记。
VCO_CF_ANIMATE 该标记总是在第一次被设置。它只是使压缩器知道动画图像是受支持的。
VCO_CF_LOSSLESS 该标记总是在第一次被设置。
VCO_CF_LOSSY 该标记总是在第一次被设置。
*int vco_get_comp_control_flags(int wi,int flags)
压缩器控制标记基于某些参数设置。所述参数如下:
1.非客户机:这让我们知道请求是来自非客户机用户还是来自客户机。
2.VCO:这让我们知道是否在VCO表中找到了高速缓存对象。
3.预取:这让我们知道请求是否是预取请求。
4.高速缓冲存储器代理:这是端口8009上的、从服务器返回给我们的请求,且为VCO请求。
基于这些参数,我们判断我们是否想要使用FORCE、COMP_HDR或COMP_BODY标记。“否”表示未被设置。“是”表示被设置。“-”表示不可能。标记指设置VCO参数。其余的依据配置参数确定。
  非客户机    VCO    预取   高速缓冲存储器代理   VCO_CC_FORCE  VCO_CC_COMP_HDR   VCO_CC_COMP_BODY
    0     0     0     0     否     是     是
    0     0     0     1     -     -     -
0 0 1 0     是
    0     0     1     1     -     -     -
    0     1     0     0     是     是     否
0 1 0 1
    0     1     1     0     否     否     否
0 1 1 1
1 0 0 0
    1     0     0     1     -     -     -
1 0 1 0
    1     0     1     1     -     -     -
1 1 0 0
1 1 0 1
    1     1     1     0     否     否     否
1 1 1 1
如果请求是一个头部请求,则还设置VCO_CC_HEAD。如果请求是一个预取请求,则还设置VCO_CC_PREFETCH标记。
*int vco_http_process_courl_prefetch(int wi)
该函数的目的是处理需要进行预取的courl。在我们发出原始预取请求并且响应返回后,我们保存压缩主体和原始头部。然后,我们发起对COURL这个调用。如果高速缓冲存储器具有该对象,则我们的工作就完成了。否则,高速缓冲存储器循环回去,然后发送一个CPURL(端口8009)给VentS。然后,该CPURL被处理,两个请求被联系在一起。这样,高速缓冲存储器可以合适的方式获得该CPURL。
尽管在这里参照优选实施方案描述了本发明,但本领域的普通技术人员将会容易地意识到,可用其他应用程序代替这里所给出的那些应用程序,而不脱离本发明的主旨和范围。因此,本发明应当仅由下面所包含的权利要求书限定。

Claims (27)

1.一种存储和访问对象的装置,包括:
客户机,用于请求对象;
服务器,用于检索所述被请求对象;
压缩器,用于在所述对象第一次被请求时压缩所述被请求对象;和
网关,用于将所述压缩对象提供给所述客户机来响应所述请求,并将所述压缩对象存储在高速缓冲存储器中供再使用。
2.如权利要求1所述的装置,其特征在于,所述压缩器还包括:
用于实现多个压缩层中的任一压缩层的装置,
其中所述网关在施用于所述对象的每个压缩层存储所述对象的拷贝。
3.如权利要求1所述的装置,其特征在于,还包括:
转化装置,用于将所述对象从其原来的格式转化成多种目标格式中的任一格式,
其中所述网关以所述对象被转化成的每种目标格式存储所述对象的拷贝。
4.如权利要求1所述的装置,其特征在于,还包括:
用于预取所述对象的装置,
其中所述对象在请求其以前被压缩并被存储在所述高速缓冲存储器中。
5.如权利要求1所述的装置,其特征在于,所述对象还包括:
头部。
6.如权利要求5所述的装置,其特征在于,所述头部是压缩过的。
7.如权利要求5所述的装置,其特征在于,所述头部是未压缩的。
8.如权利要求1所述的装置,其特征在于,还包括:
表,用于在所述对象被请求时识别和定位一个被高速缓存、压缩的对象。
9.如权利要求1所述的装置,其特征在于,所述对象还包括:
与所述对象相关联的元数据。
10.如权利要求9所述的装置,其特征在于,所述元数据包括以下任一:
对象标识信息;对象压缩系数;对象分辨率;对象格式;对象缩放系数;和对象加密信息。
11.一种存储和访问对象的方法,包括步骤:
客户机请求对象;
服务器检索所述被请求对象;
在所述对象第一次被请求时压缩所述被请求对象;
将所述压缩对象提供给所述客户机来响应所述请求;和
将所述压缩对象存储在高速缓冲存储器中供再使用。
12.如权利要求11所述的方法,其特征在于,所述压缩步骤还包括步骤:
实现多个压缩层中的任一压缩层,
其中在施用于所述对象的每个压缩层存储所述对象的拷贝。
13.如权利要求11所述的方法,其特征在于,还包括步骤:
将所述对象从其原来的格式转化成多种目标格式中的任一格式,
其中以所述对象所被转化成的每种目标格式存储所述对象的拷贝。
14.如权利要求11所述的方法,其特征在于,还包括步骤:
预取所述对象,
其中所述对象在请求其以前被压缩并被存储在所述高速缓冲存储器中。
15.如权利要求11所述的方法,其特征在于,所述对象还包括:
头部。
16.如权利要求15所述的方法,其特征在于,所述头部是压缩过的。
17.如权利要求15所述的方法,其特征在于,所述头部是未压缩的。
18.如权利要求11所述的方法,其特征在于,还包括步骤:
提供表用以在所述对象被请求时识别和定位一个被高速缓存、压缩的对象。
19.如权利要求11所述的方法,其特征在于,所述对象还包括:
与所述对象相关联的元数据。
20.如权利要求19所述的方法,其特征在于,所述元数据包括以下任一:
对象标识信息;对象压缩系数;对象分辨率;对象格式;对象缩放系数;和对象加密信息。
21.一种存储和访问对象的方法,包括步骤:
将对象压缩一次;
将所述压缩对象存储到高速缓冲存储器中供再使用;
直接从所述高速缓冲存储器检索所述压缩对象;和
直接将所述压缩对象发送给客户机。
22.如权利要求21所述的方法,其特征在于,还包括步骤:
将原始、未压缩对象保存在所述高速缓冲存储器中。
23.如权利要求22所述的方法,其特征在于,在接收到所述原始、未压缩对象后,压缩所述对象中的数据,但不压缩对象头部。
24.如权利要求21所述的方法,其特征在于,还包括步骤:
所述压缩步骤内部保存信息以识别所使用的压缩方法。
25.如权利要求21所述的方法,其特征在于,当一对象又被再次请求时,将所述对象的标识符转化成相应的压缩对象标识符,在内部表中维护所述压缩对象标识符。
26.如权利要求21所述的方法,其特征在于,还包括步骤:
将所述对象维护为一个压缩数据部分和一个单独的、未压缩头部部分,
其中所述头部用来识别所述对象;
其中当压缩对象被请求时,可快速压缩所述对象头部,因为所述对象头部的尺寸比构成所述对象本身的数据的尺寸小得多。
27.一种存储和访问对象的方法,包括步骤:
发起对象的预取请求;
如果所述对象未作为压缩对象存在于高速缓冲存储器中,建立一个具有标准头部的请求;
发送所述请求给服务器,所述服务器从所述服务器或从原始服务器完成所述请求;
在响应从所述服务器返回时,将所述对象发送给压缩器,携带标记通知压缩器压缩与所述对象相关联的数据但不压缩响应头部;
在所述压缩器发回压缩对象时,将所述压缩对象保存在队列中;
发送第二次请求给所述服务器;
当所述服务器接收到所述第二次请求时,所述服务器直接从所述高速缓冲存储器完成所述第二次请求。
CN 200480041984 2003-12-29 2004-12-22 可再用压缩对象 Pending CN101088084A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US53320403P 2003-12-29 2003-12-29
US60/533,204 2003-12-29
US10/934,667 2004-09-02

Publications (1)

Publication Number Publication Date
CN101088084A true CN101088084A (zh) 2007-12-12

Family

ID=38938258

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200480041984 Pending CN101088084A (zh) 2003-12-29 2004-12-22 可再用压缩对象

Country Status (1)

Country Link
CN (1) CN101088084A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102752320A (zh) * 2012-08-03 2012-10-24 北京光泽时代通信技术有限公司 一种代理服务器主动压缩方法及代理服务器
CN103248523A (zh) * 2013-05-07 2013-08-14 中国人民解放军国防科学技术大学 用于大规模计算阵列操作系统的网络路由配置方法
WO2022041906A1 (zh) * 2020-08-31 2022-03-03 华为技术有限公司 一种数据压缩方法以及压缩装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102752320A (zh) * 2012-08-03 2012-10-24 北京光泽时代通信技术有限公司 一种代理服务器主动压缩方法及代理服务器
CN102752320B (zh) * 2012-08-03 2015-07-01 北京光泽时代通信技术有限公司 一种代理服务器主动压缩方法及代理服务器
CN103248523A (zh) * 2013-05-07 2013-08-14 中国人民解放军国防科学技术大学 用于大规模计算阵列操作系统的网络路由配置方法
CN103248523B (zh) * 2013-05-07 2014-04-16 中国人民解放军国防科学技术大学 用于大规模计算阵列操作系统的网络路由配置方法
WO2022041906A1 (zh) * 2020-08-31 2022-03-03 华为技术有限公司 一种数据压缩方法以及压缩装置

Similar Documents

Publication Publication Date Title
US11356539B2 (en) Dynamic utilization of condensing metadata
US8620995B2 (en) Method, computer program, transcoding server and computer system for modifying a digital document
US7484007B2 (en) System and method for partial data compression and data transfer
US7047281B1 (en) Method and system for accelerating the delivery of content in a networked environment
US8312172B2 (en) Method and system for delta compression
US8463944B2 (en) Optimal compression process selection methods
US7716306B2 (en) Data caching based on data contents
US20100050089A1 (en) Web browser system of mobile communication terminal, using proxy server
JP2000508451A (ja) 再圧縮サーバー
US20090313322A1 (en) Application Streaming Over HTTP
EP2284722A1 (en) Methods and apparatus for generating graphical and media displays at a client
US20040088375A1 (en) Method for prefetching Web pages to improve response time networking
US20070109153A1 (en) Method and apparatus for efficient hardware based deflate
CA2513014A1 (en) A method of controlling delivery of multi-part content from an origin server to a mobile device browser via a proxy server
EP1623341A1 (en) Methods, data structures, and systems for processing media data streams
KR19980042182A (ko) 연속적이고 불명확한 데이타 스트림의 압축 방법 및 장치
JP2006506738A (ja) トランスコード可能なキャッシングプロキシおよびその方法
US20140164574A1 (en) Method and System for Downloading a Font File
US20050198395A1 (en) Reusable compressed objects
US7213245B2 (en) Software on demand system
CN101088084A (zh) 可再用压缩对象
Chi et al. COMPRESSIONPROXYSERVE R: DESIGNANDIMPLEMENT AT ION
JP2004528737A (ja) 構成要素発生頻度に基づく圧縮形式でデータ構造を送信および受信するための方法および装置
JP2003108464A (ja) データ転送装置およびデータ転送方法
US11989200B2 (en) System and method for lambda buckets

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication