一种浏览器缓存方法和装置的制造方法
【技术领域】
[0001]本发明涉及互联网缓存技术,尤其涉及一种浏览器缓存方法和装置。
【背景技术】
[0002]在高并发、大流量的系统中,常常需要对前端页面进行缓存,目前针对网页(web)侧前端缓存大致有闪存(flash)、本地存储(1calstorage)等解决方案,在实现过程中,目前解决方案存在实现繁琐、有存储上限和浏览器支持的问题。
【发明内容】
[0003]为解决现有存在的技术问题,本发明实施例主要提供一种浏览器缓存方法和装置。
[0004]本发明实施例的技术方案是这样实现的:
[0005]本发明实施例提供的一种浏览器缓存方法,该方法包括:
[0006]浏览器在首次打开网页时,获取第一页面,加载第一页面中的网页属性后,触发页面加载完成事件,在页面加载完成事件中执行对第二页面的初始化请求;
[0007]通过所述初始化请求获取第二页面,并缓存第二页面到本地;
[0008]再次打开所述网页时,获取第一页面,加载第一页面中网页属性后,触发页面加载完成事件,读取缓存的第二页面。
[0009]本发明实施例还提供一种浏览器缓存方法,该方法包括:
[0010]服务器在收到浏览器的第一页面请求时,向浏览器发送第一页面,在收到浏览器的对第二页面的初始化请求后,向浏览器发送第二页面。
[0011]本发明实施例还提供一种终端,所述终端包括:浏览器和存储器;其中,
[0012]浏览器,用于在首次打开网页时,获取第一页面,加载第一页面中的网页属性后,触发页面加载完成事件,在页面加载完成事件中执行对第二页面的初始化请求;通过所述初始化请求获取第二页面,并缓存第二页面到存储器;再次打开所述网页时,获取第一页面,加载第一页面中网页属性后,触发页面加载完成事件,读取存储器中缓存的第二页面;
[0013]存储器,用于缓存浏览器获取的第二页面。
[0014]本发明实施例还提供一种服务器,所述服务器包括:第一页面发送模块、第二页面发送模块;其中,
[0015]第一页面发送模块,用于在收到浏览器的第一页面请求时,向浏览器发送第一页面;
[0016]第一页面发送模块,用于在收到浏览器的对第二页面的初始化请求后,向浏览器发送第二页面。
[0017]本发明实施例还提供一种浏览器缓存系统,所述系统包括上述的终端和服务器。
[0018]本发明提供了一种浏览器缓存方法和装置,浏览器在首次打开网页时,获取第一页面,加载第一页面中的网页属性后,触发页面加载完成事件,在页面加载完成事件中执行对第二页面的初始化请求;通过所述初始化请求获取第二页面,并缓存第二页面到本地;再次打开所述网页时,获取第一页面,加载第一页面中网页属性后,触发页面加载完成事件,读取缓存的第二页面;如此,使用页面分开的缓存方式对原业务代码无影响,能够支持大部分主流浏览器,实现简单,并能有效减少刷新过程的请求和网络流量,在高并发、大流量场景有绝对优势,另外,由于第二页面可以全部进行缓存,这样就可以全页面缓存HTML对象、CSS对象、JS对象、图片,没有缓存上限。
【附图说明】
[0019]图1为现有技术中F5刷新页面的开销检测示意图;
[0020]图2为现有技术中Chrome浏览器或safari浏览器的点击刷新(F5或Ctrl+F5)过程与onload事件执行过程关系示意图;
[0021]图3为现有技术中IE浏览器的点击刷新(F5或Ctrl+F5)过程与onload事件执行过程关系示意图;
[0022]图4为本发明实施例提供的终端侧实现浏览器缓存方法的流程示意图;
[0023]图5为本发明实施例加载框架页中网页属性后的网页显示示意图;
[0024]图6为本发明实施例加载和渲染内容页后的网页显示示意图;
[0025]图7为本发明实施例提供的终端的结构示意图;
[0026]图8为本发明实施例提供的服务器的结构示意图;
[0027]图9为本发明实施例提供的浏览器缓存系统的结构示意图。
【具体实施方式】
[0028]目前大部分浏览器一般都会将打开的网页缓存到本地的缓存目录中,当下一次打开网页时,在本地的缓存目录中读取缓存的所述网页。一般情况下,浏览器确定读取缓存跟3个字段有关:
[0029]Last-Modified:服务器上文件最后修改时间;
[0030]Expires:本地缓存目录中,文件过期时间;
[0031]Cache-control:指定请求和响应遵循的缓存机制,一般由服务器指定过期
[0032]时间间隔,浏览器根据时间间隔生成具体失效时间。
[0033]浏览器在请求服务器资源时,如果缓存目录中的文件的Expires时间和Cache-control值有效,那么浏览器不会发出HTTP请求,而是直接读取本地缓存目录中的本地文件。
[0034]浏览器请求服务器资源可以分为以下3种情况:
[0035]I)直接通过点击链接或在地址栏输入urI访问;
[0036]在这种情况下,浏览器通过Expires和Cache-control判断是否读取缓存内容。
[0037]2)点击F5刷新页面;
[0038]在这种情况下,浏览器忽略Expires和Cache-control,在向服务器发送的HTTP资源请求的头文件中加入if-modified-since参数,值为上一次请求Last-Modif ied时间,月艮务器判断if-moified-since参数和服务器上网页最后修改时间是否匹配,如果匹配,则返回304消息,浏览器收到304消息后直接读取缓存的网页,如果不匹配,则返回网页内容,浏览器接收网页内容。
[0039]3)点击Ctrl+F5刷新页面;
[0040]浏览器忽略Expires、Cachec-control、Last-modified 时间,在向服务器发送的HTTP资源请求的头文件中加上Pragma:no-cache或Pragma:no-cache,Cache-Control:max-age = 0,直接请求服务器返回网页内容。
[0041]对比上述3种情况下,浏览器读取缓存的开销如下:
[0042]I)直接访问链接:不发出HTTP资源请求,直接读取缓存,开销最小;
[0043]2)F5刷新页面:如图1所示,发出约500Bytes字节流量,接收150?200Bytes的字节流量,在有cookie的情况下,HTTP资源请求会带上cookie,HTTP资源请求会比图1所示的没有cookie的情况下更大,但F5刷新页面时,总体来说开销较小,不过,仓Il建HTTP资源请求的过程会影响页面渲染速度。
[0044]3)Ctrl+F5刷新页面:网页的所有资源全部请求服务器,开销最大。
[0045]以商品详情网页中某商品的测试数据为例:
[0046]I)直接访问:浏览器接收114.5kb ;
[0047]2)F5刷新:浏览器接收171.4kb ;
[0048]3) CtrI+F5 刷新:浏览器接收 1550.9kb。
[0049]这组数据是在开启gzip加速的情况下的对比,由此可见,如果页面能做到无论F5刷新还是Ctrl+F5刷新都直接访问缓存文件,将大大减少后台服务和内容分发网络(CDN,Content Delivery Network)流量压力,在一些高并发场合