著录项信息
专利名称 | 一种通过网站识别版本号节省网站访问资源的方法 |
申请号 | CN201210389871.8 | 申请日期 | 2012-10-15 |
法律状态 | 暂无 | 申报国家 | 中国 |
公开/公告日 | 2013-01-16 | 公开/公告号 | CN102882974A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L29/08 | IPC分类号 | H04L29/08;H04L29/06;H04L29/12查看分类表>
|
申请人 | 焦点科技股份有限公司 | 申请人地址 | 江苏省南京市江北新区惠达路6号北斗大厦2号楼***
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 百卓网络科技有限公司 | 当前权利人 | 百卓网络科技有限公司 |
发明人 | 杨昕;葛亮 |
代理机构 | 南京知识律师事务所 | 代理人 | 张苏沛 |
摘要
本发明公开了一种通过网站识别版本号节省网站访问资源的方法和系统,该方法为:通过对网站识别版本号加密生成加密字符串,然后比较客户端浏览器提交的加密字符串与网站服务器新生成的加密字符串,来判断客户端浏览器请求的页面是否发生了数据更新,如果没有发生更新,网站服务器将不进行相应的逻辑运算,直接提示客户端浏览器展示缓存中的页面,从而节省了网站服务器的带宽资源和计算资源。该系统由客户端浏览器、网站服务器、数据服务器组成,网站服务器主要包括请求接收器、分析器、网站识别版本号生成器、加密器、比较器、逻辑运算器、数据发送器。
1.一种通过网站识别版本号节省网站访问资源的方法,其特征在于,包括:
网站服务器接收客户端浏览器的请求,根据请求页面中需要的数据,在数据库服务器上取得对应的数据记录ID、数据版本号、网站发布版本号,对他们按固定顺序排序后形成网站识别版本号,进行单向加密,生成唯一的加密字符串;
网站服务器把加密字符串以及展示页面的数据传送给客户端浏览器;
浏览器建立加密字符串与展示页面的对应关系,并且将展示页面缓存起来,在多次请求服务器不同URL的情况下,客户端浏览器实际上会缓存多个不同的document对象,对应多个不同的展示页面;
浏览器向网站服务器提出相同的页面访问请求时,浏览器同时将之前获得的加密字符串传送给网站服务器;
网站服务器接收客户端浏览器请求后,生成新的加密字符串,然后把新生成的加密字符串与从客户端浏览器接收的加密字符串进行比较;
如果比较后结果相同,则网站服务器直接通知客户端浏览器提取缓存中的页面进行展示;如果加密字符串比较后结果不同,则网站服务器重新根据新的数据生成新的页面传送给客户端浏览器,并且同时传送给浏览器新的加密字符串;
当数据库中的某条数据记录被新添加,修改,或者逻辑删除后,数据库触发器会被自动执行,赋予该条数据记录一个新的唯一的数据版本号,网站服务器接收到客户端浏览器的请求后,立即访问数据库,获得此数据版本号;
数据版本号同数据记录ID相结合,就可以形成唯一数据识别版本号,用以识别数据记录与此记录当前的数据版本号;在一条数据记录发生变化时,形成一元数据识别版本号,它由一条数据记录ID和该数据记录的数据版本号按固定顺序组成,在多条数据记录发生变化时,形成多元数据识别版本号,它由多个一元数据识别版本号按照固定顺序组成。
2.如权利要求1所述的方法,其特征在于,浏览器建立加密字符串与展示页面的对应关系,并且,通过将展示页面做为javascript中的document对象,采用键值对的方式缓存在浏览器中,其中键值对包含,KEY:加密字符串,VALUE:document对象。
3.如权利要求1所述的方法,其特征在于,数据识别版本号和网站发布版本号按照固定顺序组成网站识别版本号。
4.如权利要求1所述的方法,其特征在于,对网站识别版本号,采用的是MD5加密,以保证数据的不可逆。
5.一种通过网站识别版本号节省网站访问资源的系统,其特征在于,包括:
由客户端浏览器、网站服务器以及数据库服务器组成;
客户端浏览器包括多页面缓存器、渲染器;
多页面缓存器,用于缓存网站服务器返回的页面,通过将展示页面做为javascript中的document对象,采用键值对的方式缓存在浏览器多页缓存器中,在多次请求服务器不同URL的情况下,多页面缓存器实际上会缓存多个不同的document对象,对应多个不同的展示页面;
渲染器,用于展示网站服务器返回的页面,或者是展示从多页面缓存器中调用的页面;
网站服务器主要包括请求接收器、分析器、网站识别版本号生成器、加密器、比较器、逻辑运算器、数据发送器;
请求接收器,用于网站服务器接收客户端浏览器的页面请求,其中包含有浏览器上次缓存的同页面加密字符串,并把接收的请求信息交给分析器;
分析器,用于根据浏览器请求页面中需要的数据,从而决定准备访问数据库服务器时需要取得的数据信息,然后访问数据库服务器,取得页面展示所需要的相关数据记录ID、数据版本号,以及当前网站发布版本号,并把这些数据信息传送给网站识别版本号生成器;
网站识别版本号生成器,在接收到分析器发来的数据记录ID、数据版本号、当前网站发布版本号后,当只存在单条数据记录发生变化时,只需要把单条数据记录ID与该数据记录的数据版本号以固定顺序通过字符串合并的方式连接在一起,组成数据识别版本号;当存在多条数据记录发生变化时,先一一把单条数据记录ID与对应数据记录的数据版本号通过固定顺序合并成多个一元数据识别版本号,然后把多个一元数据识别版本号按照固定的顺序合并成一个多元数据识别版本号;再把最终的数据识别版本号与网站发布版本号按照固定顺序组合成网站识别版本号;然后把新生成的网站版本号传送给加密器;
加密器,用于对网站识别版本号进行单向加密,形成加密字符串;
比较器,用于把新生成的加密字符串与从客户端浏览器接收的同页面加密字符串进行比较;比较结果不同,则通过逻辑运算器进行工作,如果相同,则调用数据发送器;
逻辑运算器,用于在加密字符串比较后结果不同的情况下,则网站服务器重新根据新的数据集合进行逻辑运算,生成新的页面,把新的页面数据和新的加密字符串传送给数据发送器;
数据发送器,在比较后结果相同的情况下,直接通知客户端浏览器提取多页缓存器中的对应此加密字符串的document对象,从而展示与此相对应的页面;在比较后结果不同的情况下,把接收到的新的页面数据和新的加密字符串传送给客户端浏览器;
数据库服务器,用于管理网站的各种数据信息。
6.如权利要求5所述的系统,其特征在于,在数据库服务器中,数据版本号通过触发器自动生成;当数据库中的某条数据记录被新添加,修改,或者逻辑删除后,数据库触发器会被自动执行,赋予该条数据记录新的唯一的数据版本号。
一种通过网站识别版本号节省网站访问资源的方法
技术领域
[0001] 本发明涉及网络通信技术领域,尤其涉及一种通过数据识别版本号节省网站访问资源的方法。
背景技术
[0002] 对于一个网站来说,客户端浏览器向网站服务器提出请求,网站服务器根据此请求将要做一系列的处理:从数据库服务器取得相关数据,渲染形成相应的页面文件,并返回给客户端浏览器。因此网站的用户访问量越大,那么网站服务器所消耗的带宽资源以及计算资源也越大。
[0003] 为了节省网站服务器所消耗的带宽资源,目前业界也研究出一些方法来减少网站服务器的数据传输量以及运算量,但都存在一些缺陷。
[0004] 如在Java中Spring Framework提供的实现方法,需要网站服务器在渲染完成页面内容的生成后,对即将返回客户端浏览器的完整页面字节数据进行MD5码加密,利用MD5加密完成的字符串做为ETAG的标识符。这种处理方式要求对于每次客户端浏览器的请求,网站服务器必须完成所有的逻辑运算,包括渲染访问页面的内容,完成这些之后,同浏览器传递的ETAG互相比较,才能够判断出该页面是否已经被客户端缓存,因此,这种方法并不会节省网站服务器的计算资源,尤其是在高访问量的情况下,由于网站服务器需要对每次请求都必须处理所有的逻辑运算,虽然减少了对互联网传输带宽资源的占用,但对网站服务器访问压力降低并无帮助。
[0005] 专利“WEB页面数据的提供方法、WEB服务器及WEB应用系统”(专利申请号:
200910252576.6),此专利提出了一种方法:当WEB服务器获得客户端发出的对页面的请求时,WEB服务器先判断是否已经向客户端提供过相同页面的元素数据,如果提供过,WEB服务器只向客户端提供相同WEB页面的当前业务数据,通过这种方法减少WEB服务器与客户端之间的交互的数据量,从而避免对带宽资源的浪费。但此方法的问题在于客户端展示页面的逻辑复杂,客户端浏览器从WEB服务器获得新的业务数据,然后与之前的客户端浏览器获得的元素数据进行合成,形成新的WEB页面,这需要客户端浏览器执行大量JavaScript逻辑运算,来合成最终的展示页面,针对客户端上各种不同浏览器,在兼容性方面需要做大量的测试和修改,实现难度较高;另外,当WEB服务器升级新的网站版本后,其页面元素数据也同时发生改变,需要通知浏览器全部更新所有页面元素数据和业务数据,处理方式比较复杂。而且,不管WEB服务器是否向客户端浏览器提供过相同的WEB页面,WEB服务器都必须每次向客户端浏览器传送业务数据,这在减少交互的数据量方面实现不充分。
[0006] 因此,如何充分、快捷地节省网站服务器的访问资源,特别是带宽资源和计算资源,对于高访问量的网站来说是十分必要的。
发明内容
[0007] 针对有效减少网站服务器访问资源占用问题,本发明提出了一种通过网站识别版本号节省网站访问资源的方法及系统。
[0008] 本发明公开了一种通过网站识别版本号节省网站访问资源的方法,技术方案如下,包括:
[0009] 网站服务器接收客户端浏览器的请求,根据请求中需要的数据,访问数据库服务器,取得对应的多条数据记录的数据识别版本号以及当前的网站发布版本号。
[0010] 所述数据识别版本号由数据版本号与数据记录ID相结合,就可以形成唯一数据识别版本号,用以识别数据记录与此记录当前的数据版本号。所述数据版本号指在数据库中,某条数据记录发生改变后,数据库通过事先定义好的触发器为数据记录生成唯一的数据版本的标识。
[0011] 数据识别版本号以及当前的网站发布版本号按照固定的顺序组成网站识别版本号,并对网站识别版本号采取单向加密的方式,生成唯一加密字符串。
[0012] 网站服务器把加密字符串以及展示页面的数据传送给客户端浏览器。浏览器建立加密字符串与展示页面的对应关系,并且,通过将展示页面做为javascript中的document对象,采用键值对(KEY:加密字符串,VALUE:document对象(对应展示页面))的方式缓存在浏览器中。在多次请求服务器不同URL的情况下,客户端浏览器实际上会缓存多个不同的document对象,对应多个不同的展示页面。
[0013] 当浏览器再次向网站服务器提出相同的页面访问请求(URL以及提交内容一致)时,浏览器将之前获得的加密字符串传送给网站服务器。
[0014] 网站服务器接收客户端浏览器请求后,再次根据请求页面中需要的数据,访问数据库服务器,取得需要展示的数据记录ID、数据版本号以及当前网站发布版本号,把他们按照固定顺序组合成网站识别版本号后,对网站识别版本号进行单向加密,生成新的加密字符串。
[0015] 然后把新生成的加密字符串与从客户端浏览器接收的加密字符串进行比较,如果比较后结果相同,则网站服务器直接通知客户端浏览器提取缓存中的对应此加密字符串的document对象,从而展示与此相对应的页面。如果加密字符串比较后结果不同,则网站服务器重新根据新的数据集合生成新的页面传送给客户端浏览器,并同时传送给浏览器新的加密字符串。
[0016] 客户端根据服务器返回的信息,或者展示在浏览器缓存中的页面内容,或者展示服务器新传送过来的页面内容,并保存新的加密字符串与新的展示页面以及两者之间的对应关系。
[0017] 为了解决上述问题,本发明还公开了一种通过网站识别版本号节省网站访问资源的系统,本系统包括客户端浏览器、网站服务器以及数据库服务器组成。
[0018] 客户端浏览器包括多页面缓存器、渲染器。
[0019] 多页面缓存器,用于缓存网站服务器返回的页面。通过将展示页面做为javascript中的document对象,采用键值对(KEY:加密字符串,VALUE:document对象(对应展示页面))的方式缓存在浏览器多页缓存器中,在多次请求服务器不同URL的情况下,多页面缓存器实际上会缓存多个不同的document对象,对应多个不同的展示页面。
[0020] 渲染器,用于展示网站服务器返回的页面,或者是展示从多页面缓存器中调用的页面。
[0021] 网站服务器主要包括请求接收器、分析器、网站识别版本号生成器、加密器、比较器、逻辑运算器、数据发送器。
[0022] 请求接收器,用于网站服务器接收客户端浏览器的页面请求,其中包含有浏览器上次缓存的同页面加密字符串,并把接收的请求信息交给分析器。
[0023] 分析器,用于根据浏览器请求页面中需要的数据,从而决定准备访问数据库服务器时需要取得的数据信息,然后访问数据库服务器,取得页面展示所需要的相关数据记录ID、数据版本号,以及当前网站发布版本号,并把这些数据信息传送给网站识别版本号生成器。
[0024] 网站识别版本号生成器,在接收到分析器发来的数据记录ID、数据版本号、当前网站发布版本号后,先把数据记录ID和该数据记录的数据版本号按照固定的顺序组合成数据识别版本号,再把数据识别版本号与网站发布版本号按照固定顺序组合成网站识别版本号,然后把新生成的网站版本号传送给加密器。
[0025] 加密器,用于对网站识别版本号进行单向加密,形成加密字符串。
[0026] 比较器,用于把新生成的加密字符串与从客户端浏览器接收的同页面加密字符串进行比较。比较结果不同,则通过逻辑运算器进行工作,如果相同,则调用数据发送器。
[0027] 逻辑运算器,用于在加密字符串比较后结果不同的情况下,则网站服务器重新根据新的数据集合进行逻辑运算,生成新的页面,把新的页面数据和新的加密字符串传送给数据发送器。
[0028] 数据发送器,在比较后结果相同的情况下,直接通知客户端浏览器提取多页缓存器中的对应此加密字符串的document对象,从而展示与此相对应的页面。在比较后结果不同的情况下,把接收到的新的页面数据和新的加密字符串传送给客户端浏览器。
[0029] 数据库服务器,用于管理网站的各种数据信息。
[0030] 本发明与现有技术相比,其显著优点:
[0031] 1、通过网站识别版本号来判别页面内容是否更新,把客户端浏览器发送给网站服务器的加密字符串与网站服务器新生成的加密字符串做比较,如果比较结果相同,网站服务器将提示客户端浏览器直接使用缓存页面,节省了网站服务器的带宽资源。
[0032] 2、因为网站服务器接收到客户端浏览器的页面请求后,首先比较加密字符串来判断页面内容是否更新,解决了在现有技术中,网站服务器必须先完成所有的逻辑运算后,才判断该页面是否已经被客户端浏览器缓存的问题,节约了网站服务器的计算资源。
[0033] 3、专利“WEB页面数据的提供方法、WEB服务器及WEB应用系统”(专利申请号:
200910252576.6)中存在的问题:无法解决元素数据发生改变,业务数据不发生改变时客户端浏览器展示内容的同步更新。本发明方法在网站页面元素数据发生改变而业务数据没有变化的情况,通过比较加密字符串中网站发布版本号,保证加密字符串发生变化时,浏览器会立即展示最新页面,提高了浏览器的实时展示效果。
[0034] 4、本发明对网站识别版本号采取单向加密的方式,生成加密字符串,使黑客无法通过加密字符串内容猜测出原来网站识别版本号,有利于提高数据传输的安全。
[0035] 5、本发明将展示页面做为javascript中的document对象,采用键值对的方式缓存在浏览器中。这样在多次请求服务器不同URL的情况下,客户端浏览器实际上会缓存多个不同的document对象,对应多个不同的展示页面,有利于进一步提高浏览器的访问速度,减少对网站服务器访问资源的占用。
[0036] 6、本发明通用性强,避免了在现有专利方法中需要考虑各种不同浏览器之间兼容性的问题,方便应用到各种第三方网站中。
附图说明
[0037] 图1 为本发明实施例处理流程。
[0038] 图2 为本发明实施例加密字符串生成流程。
[0039] 图3 为本发明实施例系统结构图。
具体实施方式
[0040] 为使本发明的实施例的目的、技术方案和优点更加清楚,下面对本发明实施例中涉及的一些术语做简单解释。
[0041] ETAG:ETAG是URL的Entity Tag,用于标示URL对象是否改变,区分不同语言和Session等。HTTP协议规格说明定义ETAG为“被请求变量的实体值”,ETAG是一个可以与Web资源关联的记号(token),典型的Web资源可以是一个Web页面,也可能是JSON或XML文档。
[0042] HTTP状态码304 Not Modified:简称304状态,表示对应的WEB资源没有被修改。
客户端有缓冲的文档,并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。
当网站服务器返回HTTP应答且状态码为304,客户端浏览器使用缓存的页面展示给用户。
[0043] HTTP状态码200 OK:简称200状态,表示客户端浏览器请求成功,请求所希望的响应头或数据体将此响应返回。
[0044] Ajax: 即“Asynchronous JavaScript and XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。通过Ajax技术,向服务端请求URL,并且在客户端缓存相应访问得到的具体页面。
[0045] 数据版本号:在数据库中,每条数据代表某种实体,通常在数据库中,每次数据实体的内容发生了一次变化,数据实体版本号发生了变化,因此添加数据实体是一次变化,修改数据实体内容也是一次变化,删除数据实体也是一次变化,对于删除数据实体,并不采取真的去在数据库中删除数据实体,而是简单的将数据实体中的标志位标记为删除,因此每条数据只要存在,都会有自己唯一的数据识别版本号。数据发生改变后,数据库通过事先定义好的触发器为它生成唯一的数据版本号,根据数据版本号的不同,就可以通过数据实体中的数据版本号字段识别出数据实体是否发生了改变。因此当同一条记录两次取得的数据版本号相同时,则可以判定此数据实体没有变化,当两次取的数据版本号不同时,就可以判定数据实体发生了变化。
[0046] 数据记录ID:对于某一条数据记录,如何识别数据记录的唯一性?通过给每一条数据记录分配一个唯一的数据记录ID,就可以根据数据记录ID是否相同来判断是否为同一条数据记录。
[0047] 数据识别版本号:数据版本号同数据记录ID相结合,就可以形成唯一数据识别版本号,用以识别数据记录与此记录当前的数据版本号。在一条数据记录发生变化时,形成一元数据识别版本号,它由一个数据记录ID和该数据记录的数据版本号按固定顺序组成,在多条数据记录发生变化时,形成多元数据识别版本号,它由多个一元数据识别版本号按照固定顺序组成。
[0048] 网站发布版本号:当网站所有数据以及运算逻辑均没有发生改变,但是网站内容升级,使得页面展示内容发生了改变,因此标识网站本身更新而需要提供的一个版本号。
[0049] 加密字符串:网站页面上通常会展示数据库中多条数据,因此判断页面内容是否发生改变时,需要网站服务器综合判断相关的多条数据记录是否发生改变,同时网站也可能同时发生了升级,也需要根据网站发布版本号判断内容是否发生了改变,因此每个页面需要提供一个特定的方法,根据涉及此页面的多条数据记录的数据识别版本号以及网站发布版本号来生成唯一加密字符串,用以判断页面的数据是否发生改变。而此特定方法因放在所有服务器逻辑运算的第一步执行,因而当页面数据没有被更新时,可以减少网站服务器运算量,节省服务器计算资源。
[0050] 参阅图1所示,本发明实施例的处理方法流程,具体包括以下步骤:
[0051] 步骤100:客户端浏览器向网站服务器提出访问请求。
[0052] 步骤101:网站服务器对浏览器的请求进行分析后,访问数据库服务器,获取展示页面中所需要数据的数据记录ID和数据版本号,以及当前的网站发布版本号。其中,数据版本号的格式目前采取以【0000000001】开始,每次修改一次数据记录则加1的方式。数据记录ID的格式目前采取以【0000000001】开始每次添加一条数据记录则加1的方式。目前网站发布版本号采取的生成方式从第一版上线开始每一次变化都以1为步长累加,则第一次上线版本号为【0000000001】。
[0053] 数据识别版本号生成方式是以数据记录ID与数据版本号按照固定顺序组合而成。如一条数据记录自身的数据ID为【0000015321】,被修改的次数为2次,则这条数据的数据识别版本号为【00000153210000000002】。
[0054] 数据识别版本号和网站发布版本号按照事先固定顺序组成网站识别版本号,并通过对网站识别版本号进行单向加密,生成唯一加密字符串,将页面的数据传送给客户端浏览器,并且在传输内容中附加上生成的唯一加密字符串。
[0055] 在本发明实施例中,采用的是MD5加密,以保证数据的不可逆。实际也可以采取其他的符合要求的加密的算法。
[0056] 步骤102:客户端浏览器采用Ajax技术取得服务器返回页面内容,将页面内容展示给用户,同时将服务器返回加密字符串与服务器返回的展示页面建立一一对应关系,并且将展示页面做为javascript中的document对象采用键值对(KEY:加密字符串,VALUE:
document对象(对应展示页面))的方式缓存在浏览器中。所以在多次请求服务器URL的情况下,客户端浏览器实际上会缓存多个不同的document对象(对应多个不同需要展示的页面)。以便在需要的时候利用加密字符串做为键就可以取得对应document对象并且解析成页面内容展示给浏览器。
[0057] 步骤103:当用户再次提出相同的页面访问请求(浏览器提交的URL以及参数同上次所提交的URL和参数都相同,一般来说当浏览器没有被关闭并且相隔时间小于一个既定时间,此条件都会被满足)时,客户端浏览器应在"IF-NONE-MATCH"的Header头上将之前获得的对应加密字符串加入,并提交给网站服务器。
[0058] 步骤104:网站服务器对请求进行分析,再次生成新的网站识别版本号,重新加密生成新的加密字符串,然后与客户端浏览器提交的加密字符串进行比较。
[0059] 步骤105:比较加密字符串是否相同。如果相同,进行步骤106。如果不相同,进行步骤107。
[0060] 步骤106:如果加密字符串比较结果相同,则表示客户端浏览器两次请求中所获得的数据识别版本号相同,返回的数据也应该相同,那么客户端浏览器两次请求所返回的页面也应该完全相同。网站服务器直接返回304状态,而不传递展示页面内容。
[0061] 部分代码如下可供参考:
[0062] // 取得加密字符串内容
[0063] byte[] body = responseWrapper.toByteArray();
[0064] int statusCode = responseWrapper.getStatusCode();
[0065] // 判断状态码是否在正常范围内
[0066] if (isEligibleForEtag(request, responseWrapper, statusCode, body)) {[0067] //先取response里面的etag
[0068] String responseETag = responseWrapper.getEtag();
[0069] if (responseETag == null) {
[0070] responseETag = generateETagHeaderValue(body);
[0071] response.setHeader(HEADER_ETAG, responseETag);
[0072] }
[0073] // 与浏览器的加密字符串进行比较
[0074] String requestETag = request.getHeader(
[0075] HEADER_IF_NONE_MATCH);
[0076] if (responseETag.equals(requestETag)) {
[0077] if (logger.isTraceEnabled()) {
[0078] logger.trace("ETag [" + responseETag + "] equal to[0079] If-None-Match, sending 304");}
[0080] // 相同的情况下,直接设置返回页面数据长度为0
[0081] response.setContentLength(0);
[0082] // 并且设置HTTP应答中的状态码为304:NOT_MODIFIED
[0083] response.setStatus(
[0084] HttpServletResponse.SC_NOT_MODIFIED); }
[0085] else {
[0086] // 不同的情况下,输出页面内容数据给浏览器
[0087] copyBodyToResponse(body, response);}
[0088] }
[0089] else {
[0090] // 非正常范围直接输出页面内容数据
[0091] if (logger.isTraceEnabled()) {
[0092] logger.trace("Response with status code [" +
[0093] statusCode + "] not eligible for ETag");
[0094] }
[0095] copyBodyToResponse(body, response);}。
[0096] 步骤107:如果加密字符串比较结果不同,则网站服务器返回200状态,同时重新根据新的数据生成新的展示页面,然后把新的加密字符串以及新的展示页面内容传送给客户端浏览器。
[0097] 步骤108:客户端浏览器根据网站服务器返回的HTTP状态码来判断,如果是304状态,则说明加密字符串对应的展示页面在客户端浏览器中已经被缓存。可以通过客户端浏览器中的javascript代码利用请求加密字符串直接提取到之前缓存的document对象,并且把document对象解析成页面内容展示。如果是200状态,则客户端浏览器展示网站服务器返回的新页面,并且将新的展示页面以及新的加密字符串缓存在客户端浏览器中,缓存的方式同步骤102中的处理步骤是相同的。
[0098] 为了防止客户端缓存的页面过多,这里客户端缓存的页面有上限,目前采用的是定值10,如果客户端浏览器已经缓存了10个不同的页面,则访问时间更古老的缓存的页面则会被放弃,也就是利用javascript将该页面的document对象和对应加密字符串直接移除。该页面再次请求服务器时,也不会附加相应的加密字符串,作为全新的访问请求执行一系列处理。
[0099] 参阅图2所示,本发明实施例加密字符串生成流程,其步骤如下:
[0100] 步骤200:网站服务器接到浏览器的页面请求后,访问数据库服务器,获得相关的数据记录ID、数据版本号以及网站发布版本号。
[0101] 步骤201:当页面展示单条数据记录时,只需要把单条数据记录ID与该数据记录的数据版本号以固定顺序通过字符串合并的方式连接在一起,组成数据识别版本号。
[0102] 当页面展示多条数据记录时,一一把多条数据记录ID与对应数据记录的数据版本号通过以规定的顺序合并成多个一元数据识别版本号,然后把这些一元数据识别版本号按照固定顺序合并成多元数据识别版本号。
[0103] 字符串连接中数据识别字符串必须为固定顺序,以保证同样的两次客户端请求,所预期取得的数据是同样的,因此需要注意,所有的取得的数据集合应该是顺序的集合,如查询数据库时候,如果查询的结果预期为多记录的集合,则查询数据库的SQL文本必须加上顺序,如ORDER DESC或者ORDER ASC等等。以保证查询条件相同,返回的内容也应该相同。
[0104] 步骤202:数据识别版本号与网站发布版本号按照固定的顺序组合成网站识别版本号。
[0105] 步骤203:对网站识别版本号进行单向加密。
[0106] 步骤204:生成新的唯一加密字符串。
[0107] 唯一加密字符串的生成必须符合以下的原则,首先加密字符串必须为单向加密,以保证黑客无法通过加密字符串内容猜测出原来数据识别版本号,其次加密字符串的生成需要保证数据识别版本号与网站识别版本号字符串连接顺序遵循固定的顺序排列,组合成网站识别版本号,以保证以下的约束。
[0108] 如果存在2个网站识别版本号,分别为x,y,如果x等于y,则单向加密后形成的加密字符串f(x)等于f(y),如果x不等于y,则单向加密后的加密字符串f(x)不等于f(y),以确保通过加密以后的字符串的比较,就能够知道2个网站识别版本号是否相同,也就意味着能够知道网站的页面是否发生了改变。目前MD5加密方式已经能够满足需要。
[0109] 参阅图3所示,本发明实施例系统结构包括:浏览器30、网站服务器31、数据库服务器32。
[0110] 客户端浏览器包括多页面缓存器300、渲染器301。
[0111] 多页面缓存器300,用于缓存网站服务器返回的页面。通过将展示页面做为javascript中的document对象,采用键值对(KEY:加密字符串,VALUE:document对象(对应展示页面))的方式缓存在多页面缓存器中,在多次请求服务器不同URL的情况下,多页面缓存器实际上会缓存多个不同的document对象,对应多个不同的展示页面。
[0112] 渲染器301,用于接收网站服务器31的返回信息,如果返回的是“304状态”,则从多页面缓存器300中调用的页面并渲染显示。如果返回的是“200状态”,则展示网站服务器返回的新页面,并且将新的展示页面以及新的加密字符串缓存在多页缓存器300中。
[0113] 网站服务器31主要包括请求接收器310、分析器311、网站识别版本号生成器312、加密器313、比较器314、逻辑运算器315、数据发送器316。
[0114] 请求接收器310,用于网站服务器31接收客户端浏览器30的页面请求,其中包含有浏览器上次缓存的同页面加密字符串,并把接收的请求信息交给分析器311。
[0115] 分析器311,用于根据浏览器请求页面中需要的数据,从而决定准备访问数据库服务器时需要取得的数据信息,然后访问数据库服务器,取得页面展示所需要的相关数据记录ID、数据版本号,以及当前网站发布版本号,并把这些数据信息传送给网站识别版本号生成器312。
[0116] 网站识别版本号生成器312,在接收到分析器311发来的数据记录ID、数据版本号、当前网站发布版本号后,当只存在单条数据记录发生变化时,只需要把单条数据记录ID与该数据记录的数据版本号以固定顺序通过字符串合并的方式连接在一起,组成数据识别版本号。当页面存在多条数据记录时,先一一把多条数据记录ID与对应数据记录的数据版本号通过固定顺序合并成多个一元数据识别版本号,然后把多个一元数据识别版本号按照固定的顺序合并成一个多元数据识别版本号。再把最终的数据识别版本号与网站发布版本号按照固定顺序组合成网站识别版本号,然后把新生成的网站版本号传送给加密器313。
[0117] 加密器313,用于对网站识别版本号进行单向加密,形成加密字符串,采用的是MD5加密,以保证数据的不可逆。
[0118] 比较器314,用于把新生成的加密字符串与从客户端浏览器30接收的对应的同页面加密字符串进行比较。比较结果不同,则通过逻辑运算器315进行工作,如果相同,则调用数据发送器316。
[0119] 逻辑运算器315,用于在加密字符串比较后结果不同的情况下,则重新根据新的数据集合进行逻辑运算,生成新的页面,把新的页面数据和新的加密字符串传送给数据发送器316。
[0120] 数据发送器316,在比较后结果相同的情况下,向客户端浏览器30返回“304状态”,通知客户端浏览器30提取多页缓存器300中的对应此加密字符串的document对象,从而展示与此相对应的页面。在比较后结果不同的情况下,向客户端浏览器30返回“200状态”,把新的页面数据和新的加密字符串传送给客户端浏览器30。
[0121] 数据库服务器31,用于管理网站的各种数据信息。其中,数据版本号通过触发器自动生成。当数据库中的某条记录被新添加,修改,或者逻辑删除(用标记位标记为删除状态)后,数据库触发器会被自动执行,赋予该条数据记录新的唯一的数据版本号。
[0122] 本发明通过数据识别版本号,来判断客户端浏览器请求的页面是否发生了数据更新,如果没有发生更新,网站服务器将不进行相应的逻辑运算,直接提示客户端浏览器展示缓存中的页面,节省了网站服务器的带宽资源和计算资源。
[0123] 本领域的开发人员可以对本发明的实施例进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明实施例中的这些修改和变型属于本发明权利要求及其等同的范围之内,则本发明中的实施例也包含这些改动和变型在内。
法律信息
- 2017-12-19
专利权的转移
登记生效日: 2017.11.30
专利权人由焦点科技股份有限公司变更为百卓网络科技有限公司
地址由210061 江苏省南京市高新区星火路软件大厦A座12F变更为210000 江苏省南京市江北新区惠达路6号北斗大厦2号楼70室
- 2015-04-29
- 2013-02-27
实质审查的生效
IPC(主分类): H04L 29/08
专利申请号: 201210389871.8
申请日: 2012.10.15
- 2013-01-16
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2012-10-10
|
2012-05-25
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |