发明内容
本申请提供了一种快速访问网页的方法、装置及一种浏览器,以解决浏览器第一次访问无缓存的问题。
为了解决上述问题,本申请公开了一种快速访问网页的方法,包括:
预先在本地创建一区别于浏览器默认缓存区的优化缓存区,并在所述区别于浏览器默认缓存区的优化缓存区中预加载需要访问的所有网页数据;
当发起网页访问请求时,查询所述优化缓存区中是否保存所述网页访问请求对应的网页数据,如果已保存,则直接从所述优化缓存区中读取所述网页数据;如果未保存,则触发浏览器默认的缓存机制来查询浏览器的默认缓存区中是否保存所述网页数据。
优选的,所述浏览器默认的缓存机制还包括:当浏览器的默认缓存区中已保存所述网页数据时,直接从浏览器的默认缓存区中读取;当浏览器的默认缓存区中未保存所述网页数据时,从服务器进行下载。
优选的,所述预先在本地创建优化缓存区,包括:在本地安装协议处理器,由所述协议处理器创建优化缓存区。
优选的,所述在优化缓存区中预加载需要访问的所有网页数据,包括:安装完成后,自动从服务器下载需要访问的所有网页数据,并保存到所述优化缓存区中。
优选的,所述在优化缓存区中预加载需要访问的所有网页数据,包括:在所述协议处理器的安装包中预置需要访问的所有网页数据,并在安装完成后将安装包中需要访问的所有网页数据保存到所述优化缓存区中。
优选的,当发起网页访问请求时,还包括:浏览器的URL处理模块调用查询函数查看协议处理器是否实现了供外部调用的接口;如果已实现,则通知协议处理器查询所述优化缓存区中是否保存所述网页访问请求对应的网页数据;如果未实现,则通知浏览器默认的缓存模块查询浏览器的默认缓存区中是否保存所述网页访问请求对应的网页数据。
优选的,所述直接从优化缓存区中读取所述网页数据之前,还包括:所述协议处理器通知浏览器的URL处理模块所述优化缓存区中已保存所述网页数据。
优选的,所述直接从优化缓存区中读取所述网页数据,包括:所述浏览器的URL处理模块调用协议处理器的读取函数,从优化缓存区中读取所述网页数据。
优选的,所述网页数据包含网页脚本数据。
本申请还提供了一种快速访问网页的装置,包括:
优化缓存区创建模块,用于预先在本地创建一区别于浏览器默认缓存区的优化缓存区;
预加载模块,用于在所述区别于浏览器默认缓存区的优化缓存区中预加载需要访问的所有网页数据;
数据获取模块,用于当发起网页访问请求时,查询所述优化缓存区中是否保存所述网页访问请求对应的网页数据,如果已保存,则直接从所述优化缓存区中读取所述网页数据;如果未保存,则触发浏览器默认的缓存模块来查询浏览器的默认缓存区中是否保存所述网页数据。
优选的,所述浏览器默认的缓存模块还用于当浏览器的默认缓存区中已保存所述网页数据时,直接从浏览器的默认缓存区中读取;当浏览器的默认缓存区中未保存所述网页数据时,从服务器进行下载。
优选的,所述预加载模块包括:数据下载子模块,用于自动从服务器下载需要访问的所有网页数据,并保存到所述优化缓存区中。
优选的,所述预加载模块包括:
数据存储子模块,用于存储需要访问的所有网页数据;
加载子模块,用于将所述数据存储子模块中需要访问的所有网页数据保存到所述优化缓存区中。
优选的,所述网页数据包含网页脚本数据。
本申请还提供了一种快速访问网页的浏览器,包括:协议处理器,所述协议处理器包括如上述权利要求10至14任一权利要求所述的快速访问网页的装置。
优选的,所述浏览器还包括:URL处理模块,用于当发起网页访问请求时,调用查询函数查看协议处理器是否实现了供外部调用的接口;如果已实现,则通知协议处理器查询优化缓存区中是否保存所述网页访问请求对应的网页数据;如果未实现,则通知浏览器默认的缓存模块查询浏览器的默认缓存区中是否保存所述网页访问请求对应的网页数据。
与现有技术相比,本申请包括以下优点:
首先,本申请实现了一种新的可以配置可以运营维护的缓存机制,本身并不替代原有浏览器的缓存机制,而是完全兼容原有的缓存机制,是对浏览器缓存机制的一种补充。基于本申请,当浏览器访问网页时,先从本申请提供的优化缓存中读取网页数据,当读取不到时再使用浏览器的缓存机制,从浏览器的默认缓存区读取。因此,当第一次访问网页时,虽然浏览器的默认缓存区没有该网页数据,但是只要这个网页数据预先配置到了优化缓存区中,就可以直接从所述优化缓存区中读取到,从而提高了访问速度。
同时,由于所述优化缓存区中的缓存数据只要配置好后就不会被定期清理,即使浏览器定期执行清理机制,也不会影响所述优化缓存区中的缓存数据。因此,通过这种补充的缓存机制,缓存的文件可以不被浏览器或者其它软件清理掉,解决了网站的缓存文件经常被浏览器自动清理的问题,减少了某些特定网站服务器带宽的占用。本申请尤其适用于具有复杂页面脚本的网页访问。
其次,本申请利用Windows的异步可插入协议(APPS,AsynchronousPluggable Protocols),通过自创建异步可插协议处理器实现HTTP协议的网络请求的接管。通过这种接管,可以很方便快捷地实现所需要的缓存机制。
当然,实施本申请的任一产品不一定需要同时达到以上所述的所有优点。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
本申请实现了一种新的可以配置可以运营维护的缓存机制,本身并不替代原有浏览器的缓存机制,而是完全兼容原有的缓存机制,是对浏览器缓存机制的一种补充。
下面通过实施例对本申请的实现进行详细说明。
参照图1,是本申请实施例所述一种快速访问网页的方法流程图。
步骤101,预先在本地创建优化缓存区,并在所述优化缓存区中预加载需要访问的所有网页数据;
本实施例中,可以将需要提高访问速度的网站的相关文件和索引文件(统称为网页数据或缓存文件)通过安装包或者客户端的升级模块,提前安装到用户的机器上,并在用户机器上创建优化缓存区来缓存这些网页数据。具体的,所述网页数据或缓存文件可以包含图片、文字等网页本身的内容,也可以包含cookie文件,还可以包含网页脚本等。
其中,所述优化缓存区区别于浏览器的默认缓存区。浏览器支持的网页缓存机制是将浏览器曾经访问过的网页数据存到所述默认缓存区中,并对该默认缓存区进行自动清理和维护。而本申请实施例所述的优化缓存区并不是将浏览器曾经访问过的网页数据进行缓存,而是通过预加载的方式将所有可能访问的网站的数据进行缓存,这些网页数据浏览器可能一次都没有访问过。
进一步的,本实施例提供了两种预加载方式,如下:
一种方式是在安装包或者客户端升级模块安装完成后,自动从服务器下载需要访问的所有网页数据,并保存到所述优化缓存区中;
另一种方式是所述安装包或者客户端升级模块中自带了需要访问的所有网页数据,也即在所述安装包或者客户端升级模块中预配置需要访问的所有网页数据,并在安装完成后将所有网页数据保存到所述优化缓存区中。
实际应用中采用任何一种预加载方式均可。而且,无论采用哪种预加载方式,预加载的内容都可以进行配置,即可以根据用户的需求配置好哪些网站的网页数据(如脚本、cookie、图片、文字等)需要进行预加载。
步骤102,当发起网页访问请求时,查询所述优化缓存区中是否保存所述网页访问请求对应的网页数据,如果已保存,则直接从所述优化缓存区中读取所述网页数据;
具体查询时,根据缓存文件的索引进行查询。所述索引是一个索引文件,里面包含有网页URL和优化缓存区中缓存文件的对应关系。在浏览器访问网页发出网页资源的http请求时,将会去此索引文件内进行搜索,如果可以找到对应的缓存文件则直接读取,否则,执行步骤103返回给系统做默认处理。
由上可知,当访问网页发出请求时,浏览器会首先查询所述优化缓存区,而不是原来的浏览器默认缓存区。
步骤103,如果未保存,则触发浏览器默认的缓存机制来查询浏览器的默认缓存区中是否保存所述网页数据;
当浏览器的默认缓存区中已保存所述网页数据时,直接从浏览器的默认缓存区中读取;
当浏览器的默认缓存区中未保存所述网页数据时,再从服务器进行下载。
以上就是系统的默认处理,即使用浏览器支持的缓存机制。
总之,无论是从优化缓存区读取,还是从浏览器默认缓存区读取,还是从服务器上下载,当获取到需要访问的缓存文件后,继续进行后续处理,如在客户端显示。
由上述流程可知,当第一次访问网页时,虽然浏览器的默认缓存区没有该网页数据,但是只要这个网页数据预先配置到了优化缓存区中,就可以直接从所述优化缓存区中读取到,从而提高了访问速度。
同时,由于所述优化缓存区中的缓存数据只要配置好后就不会被定期清理,即使浏览器定期执行清理机制,也不会影响所述优化缓存区中的缓存数据。因此,通过这种补充的缓存机制,缓存的文件可以不被浏览器或者其它软件清理掉,解决了网站的缓存文件经常被浏览器自动清理的问题,减少了某些特定网站服务器带宽的占用。为了使本领域技术人员进一步理解本申请的实现,下面通过更具体的例子进行详细说明。
在本实施例中,将利用Windows的异步可插入协议(APPS,AsynchronousPluggable Protocols),通过自创建异步可插协议处理器实现http协议的网络请求的接管,从而获得浏览器所有http协议方面的处理权限。通过这种接管,可以很方便快捷地实现所需要的缓存机制。
异步可插协议处理器(APPS)是Windows平台上处理自定义URL协议方案或者为指定的MIME类型过滤数据的一种方案,它允许通过APPS替换掉Windows系统默认的URL协议,比如http协议或者about协议等。
异步可插协议处理器(APPS)是一个用于处理任何注册为协议方案的调用的线程单元COM对象。当客户端程序作出请求,Urlmon(Windows的URL处理模块)在注册表中查看协议方案并创建一个已经为这个协议方案注册的协议处理程序的实例。如果协议注册方案被成功地映射到协议处理器的类标识(CLSID),将调用IClassFactory接口的CoCreateInstance方法。协议处理器通过IClassFactory::CreateInstance函数来获得实例。
在Windows系统下,原浏览器缓存机制可通过系统的异步可插协议处理器APPS(简称默认APPS)实现。本实施例自创建异步可插协议处理器APPS(简称自创建APPS),并作为对系统默认APPS的补充,二者配合使用可实现网页访问速度的提高,同时可防止缓存被浏览器自动清理。
其中,所述自创建的APPS可单独作为一个插件安装到IE浏览器上使用,也可以作为浏览器功能的一部分,客户端安装具有所述APPS的全新浏览器来实现本申请。无论是安装单独的插件,还是安装一个全新的浏览器,在安装完成后,自创建的APPS都会在客户端创建一个优化缓存区,并将预配置好的需要访问的所有网页数据保存到所述优化缓存区中。
下面的流程图2显示了如何通过APPS实现http的网络请求,从自定义的优化缓存区中读取数据,而不需要从网络上获取。
参照图2,是本申请另一实施例所述一种快速访问网页的流程示意图。
步骤201,当网页发出http请求时,浏览器的URL处理模块(Urlmon.dll)调用查询函数查看自创建APPS是否实现了供外部调用的接口;
具体的,系统的Urlmon.dll首先调用QueryInterface函数(它是一个Com的标准函数,功能是查询接口)查看自创建APPS是否实现了IInternetProtocol接口。其中,所述IInternetProtocol接口是一个由自创建APPS暴露给外部调用的一个接口,在下载操作(指的是网络下载过程)中负责和IInternetProtocolSink接口通讯。
如果该接口已实现,则执行步骤202,通知自创建APPS查询所述优化缓存区中是否保存所述网页访问请求对应的网页数据;
如果该接口未实现,则通知浏览器默认APPS(也可称为浏览器默认的缓存模块)查询浏览器的默认缓存区中是否保存所述网页访问请求对应的网页数据,后续步骤在此略。
步骤202,通知自创建APPS查询所述优化缓存区中是否保存所述网页访问请求对应的网页数据;
如果已保存,则执行步骤203;否则,通知浏览器默认APPS,后续步骤在此略。
具体的,系统Urlmon.dll调用自创建APPS的IInternetProtocolRoot::Start方法,并且传递Urlmon.dll的IInternetProtocolSink接口的地址。
其中,IInternetProtocolRoot::Start方法可用于查询要访问的URL对应的数据是否在优化缓存区中。
其中,IInternetProtocolSink接口是一个用来接收来自APPS数据相关的信息和通知的接口。
步骤203,自创建APPS开始查询;
首先从本地的一个优化缓存区查询数据,如果此缓存区存有需要加速的特殊页面对应文件,就从本地优化缓存区读取,而不需要从网络上去请求,这样就实现了复杂网页的加速。否则,若查询不到,再调用系统的默认APPS。
步骤204,当查询到,则自创建APPS通知Urlmon.dll所述优化缓存区中已保存所述网页数据;
具体的,当自创建APPS开始从本地优化缓存区读取到对应数据之后,调用Urlmon.dll的IInternetProtocolSink::ReportData方法通知Urlmon.dll。
步骤205,Urlmon.dll调用自创建APPS的读取函数,从优化缓存区中读取所述网页数据;
具体的,系统Urlmon.dll调用自创建APPS的IInternetProtocol::Read方法进行读取。
步骤206,重复步骤204到步骤205,直到自创建APPS完成请求数据的下载任务。
上述流程可以提高网页的加载速度,甚至可以通过客户端软件预先下载用户所需要访问网站的所有网页文件,从而减少网络连接速度和次数。而且,还可以防止缓存被浏览器自动清理掉。
此外,还需要说明的是,本申请上述实施例尤其适用于具有复杂页面脚本的网页访问和加载。在访问这些复杂页面的时候,如果从服务器下载复杂的页面脚本,需要花费更多的时间;但如果使用本申请实施例所述的方法,通过预加载的方式先加载到本地的优化缓存区中,再从所述优化缓存区读取,则访问速度大大提高,而且对复杂脚本页面的加速效果更加明显。
需要说明的是,对于前述的方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请所必须的。
基于上述方法实施例的说明,本申请还提供了相应的装置实施例,如下。
参照图3,是本申请实施例所述一种快速访问网页的装置结构图。
所述快速访问网页的装置10可包括优化缓存区创建模块20、预加载模块30和数据获取模块40,其中,
优化缓存区创建模块20,用于预先在本地创建优化缓存区;
预加载模块30,用于在所述优化缓存区中预加载需要访问的所有网页数据;
数据获取模块40,用于当发起网页访问请求时,查询所述优化缓存区中是否保存所述网页访问请求对应的网页数据,如果已保存,则直接从所述优化缓存区中读取所述网页数据;如果未保存,则触发浏览器默认的缓存模块来查询浏览器的默认缓存区中是否保存所述网页数据。
所述浏览器默认的缓存模块还用于当浏览器的默认缓存区中已保存所述网页数据时,直接从浏览器的默认缓存区中读取;当浏览器的默认缓存区中未保存所述网页数据时,从服务器进行下载。
其中,所述浏览器默认的缓存模块用于实现浏览器自带的网页缓存机制,可以是浏览器自带的APPS。
进一步优选的,在上述方法实施例中提供了两种预加载方式,对应这两种预加载方式,所述预加载模块30可分别包含以下子模块:
所述预加载模块30可以包括:
数据下载子模块,用于自动从服务器下载需要访问的所有网页数据,并保存到所述优化缓存区中。
所述预加载模块30也可以包括:
数据存储子模块,用于存储需要访问的所有网页数据;
加载子模块,用于将所述数据存储子模块中需要访问的所有网页数据保存到所述优化缓存区中。
当然,所述预加载模块30也可以同时包含实现两种配置方式的以上所有子模块。
对于上述装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
所述快速访问网页的装置可作为单独的插件安装到IE浏览器上使用,也可以作为浏览器功能的一部分,如图4所示。
参照图4,是本申请实施例所述一种快速访问网页的浏览器结构图。
所述浏览器包含一协议处理器50,所述协议处理器50可包含图3所示的快速访问网页的装置10,可参见图3的说明,在此略。
此外,所述浏览器还可包括缓存模块60,用于实现浏览器默认的网页缓存机制。
优选的,所述浏览器还可以包括URL处理模块70,用于当发起网页访问请求时,调用查询函数查看协议处理器50是否实现了供外部调用的接口;如果已实现,则通知协议处理器50查询优化缓存区中是否保存所述网页访问请求对应的网页数据;如果未实现,则通知浏览器默认的缓存模块60查询浏览器的默认缓存区中是否保存所述网页访问请求对应的网页数据。
综上所述,所述快速访问网页的装置或浏览器实现了一种新的可以配置可以运营维护的缓存机制,本身并不替代原有浏览器的缓存机制,而是完全兼容原有的缓存机制,是对浏览器缓存机制的一种补充。通过这种补充的缓存机制,缓存的文件可以不被原浏览器或者其它软件清理掉,解决了网站的缓存文件经常被浏览器自动清理的问题,减少了某些特定网站服务器带宽的占用。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
以上对本申请所提供的一种快速访问网页的方法、装置及一种浏览器,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。