专利名称:一种ie内核浏览器的页面下载控制方法和系统的制作方法
技术领域:
本申请涉及浏览器的技术领域,特别是涉及一种IE内核浏览器的页面下载控制方法和一种IE内核浏览器的页面下载控制系统。
背景技术:
浏览器最重要的部分是“Rendering Engine”,可大概译为“解释引擎”,一般习惯将之称为“浏览器内核”。浏览器内核负责对网页语法的解释(如HTML、JavaScript)并渲染(显示)网页。所以,通常所谓的浏览器内核也就是对页面进行下载、解析、执行、渲染的引擎,该引擎决定了浏览器如何显示网页的内容以及页面的格式信息。目前市场上流行的浏览器,按实现方式大体可以分为两种第一种,浏览器的开发者既进行浏览器内核的开发,也进行浏览器产品的开发。 如chrome浏览器、firefox浏览器、Safari浏览器、InternetExplore浏览器等。第二种,浏览器的开发者,仅进行浏览器产品的开发,使用其他浏览器厂商实现的内核。将内核嵌入到自己浏览器内来使用。如360安全浏览器、遨游浏览器、世界之窗浏览器、搜狗浏览器等。这种浏览器通常采用hternet Explorer浏览器内核,通常被称之为 "IE内核浏览器”。目前市场上所有的IE内核浏览器,仅是直接使用系统提供的WebBrowser组件实现。具体的使用方法是,首先用OleCreate API (应用程序接口)创建WebBrowser组件,获取组件创建的窗口,将其嵌入到浏览器的窗口内。然后调用该WebBrowser组件提供的接口,让它访问网址。在整个访问过程中,由WebBrowser组件自己的代码来进行网页的下载、 解析、执行、渲染。外壳程序仅需接收组件返回的通知,变更相应界面内容。IE内核为了让开发者使用起来非常简单,所以暴露的接口非常有限,一般只提供访问网页、停止、刷新、后退等基本接口,仅能对页面进行简单的控制,如访问某网址、刷新、 停止、后退等。对于很多内部情况,浏览器开发者毫不知情、无法控制。尤其是无法控制页面下载过程,从而影响页面下载的效率和稳定性。总之,需要本领域技术人员迫切解决的一个技术问题就是如何能够有效控制IE 内核浏览器的页面下载过程,以提高页面下载的效率和稳定性。
发明内容
本申请所要解决的技术问题是提供一种IE内核浏览器的页面下载控制方法,用以有效控制IE内核浏览器的页面下载过程,提高页面下载的效率和稳定性。相应地,本申请还提供了一种IE内核浏览器的页面下载控制系统,用以保证上述方法在实际中的应用。本申请为解决上述问题提供了一种IE内核浏览器的页面下载控制方法,包括启动IE内核浏览器进程,并启动预置的下载进程;在所述IE内核浏览器进程中注册通信协议,等待基于相应通信协议的页面下载请求;当所述IE内核浏览器进程收到页面下载请求时,将所述页面下载请求发送给下载进程;下载进程将所述页面下载请求添加至预先生成的下载任务列表中;获取所述页面下载请求对应的页面资源类型,在所述下载任务列表中,按照所述页面资源类型对页面下载请求进行排序;依次处理所述下载任务列表中的页面下载请求,执行相应的页面下载操作;在所述页面下载过程中向IE内核浏览器进程返回下载状态信息。优选的是,所述页面下载请求中包括URL信息,所述URL信息中包括扩展名信息, 所述页面下载请求对应的页面资源类型通过读取所述扩展名信息获取。优选的是,所述方法,还包括所述IE内核浏览器进程依据所述下载状态信息,对下载的页面数据进行解析、执行、和/或渲染的操作。优选的是,所述在IE内核浏览器进程中注册通信协议的步骤为,使用 IInternetSession接口的RegisterNameSpace方法,在IE内核浏览器进程中注册通信协议,所述通信协议包括http协议、https协议、mailto协议和FTP协议。优选的是,所述执行相应的页面下载操作的步骤包括获取所述页面下载请求对应的文件大小信息;判断所述文件大小信息是否超过预设的文件大小阈值;若是,则采用多线程下载的方式执行相应页面的下载操作;否则,采用单线程下载的方式执行相应页面的下载操作。优选的是,在下载进程将所述页面下载请求添加至预先生成的下载任务列表中的步骤之前,还包括下载进程根据所述页面下载请求判断所请求的文件是否已被预先写入缓存中;若是,则从缓存中提取该文件;若否,则开始执行所述下载进程将页面下载请求添加至预先生成的下载任务列表中的步骤。优选的是,所述方法,还包括将下载的文件写入缓存中。优选的是,在从缓存中提取文件的步骤之前,还包括查询该文件写入缓存的时间是否超过预设期限,若是,则开始执行所述下载进程将页面下载请求添加至预先生成的下载任务列表中的步骤;若否,则执行从从缓存中提取相应文件的步骤。本申请实施例还提供了一种IE内核浏览器的页面下载控制系统,包括启动模块,用于启动IE内核浏览器进程,并启动预置的下载进程;协议注册模块,用于在所述IE内核浏览器进程中注册通信协议,等待基于相应通信协议的页面下载请求;请求传送模块,用于在IE内核浏览器进程收到页面下载请求时,将所述页面下载请求发送给下载进程;任务添加模块,用于由下载进程将所述页面下载请求添加至预先生成的下载任务列表中;排序模块,用于获取所述页面下载请求对应的页面资源类型,在所述下载任务列表中,按照所述页面资源类型对页面下载请求进行排序;下载执行模块,用于依次处理所述下载任务列表中的页面下载请求,执行相应的页面下载操作;状态汇报模块,用于在所述页面下载过程中向IE内核浏览器进程返回下载状态信息。优选的是,所述页面下载请求中包括URL信息,所述URL信息中包括扩展名信息, 所述页面下载请求对应的页面资源类型通过读取所述扩展名信息获取。优选的是,所述的系统,还包括内核操作模块,用于由所述IE内核浏览器进程依据所述下载状态信息,对下载的页面数据进行解析、执行、和/或渲染的操作。优选的是,所述下载执行模块包括文件大小获取子模块,用于获取所述页面下载请求对应的文件大小信息;文件大小判断子模块,用于判断所述文件大小信息是否超过预设的文件大小阈值,若是,则调用多线程下载子模块;否则,调用单线程下载子模块;多线程下载子模块,用于采用多线程下载的方式执行相应页面的下载操作;单线程下载子模块,用于采用单线程下载的方式执行相应页面的下载操作。优选的是,所述的系统,还包括缓存判断模块,用于由下载进程根据所述页面下载请求判断相应的文件是否被预先写入缓存中,若是,则触发缓存提取模块;若否,则触发任务添加模块;缓存提取模块,用于从缓存中提取该文件。优选的是,所述的系统,还包括缓存写入模块,用于将下载的文件写入缓存中。优选的是,所述的系统,还包括缓存超期判断模块,用于查询该文件写入缓存的时间是否超过预设期限,若是,则调用所述任务添加模块;若否,则调用所述缓存提取模块。与现有技术相比,本申请具有以下优点本申请使用IE的协议管理扩展接口,来将IE内核浏览器的全部下载都自己接管, 从而使嵌入IE内核浏览器的外壳程序,能够自行控制浏览器内核的下载,并将下载后的数据送回IE内核,让其继续执行解析、执行、渲染的工作。由于下载行为不发生在浏览器进程,当下载遇到问题程序崩溃时,浏览器进程不会随之崩溃,可以重新启动一个下载进程继续下载。因而,本申请可以有效控制IE内核浏览器的页面下载过程,以提高页面下载的效率和稳定性。再者,本申请通过采用资源排序、多线程下载和缓存读写的下载优化方案,能提升下载速度和页面展现速度,充分发挥用户的带宽,提高资源利用率。
图1是本申请的一种IE内核浏览器的页面下载控制方法实施例1的步骤流程图2是本申请的一种IE内核浏览器的页面下载控制方法实施例2的步骤流程图;图3是是本申请的一种IE内核浏览器的页面下载控制系统实施例的结构框图。
具体实施例方式为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本申请作进一步详细的说明。本申请的核心构思在于,使嵌入IE内核浏览器的外壳程序,能够自行控制浏览器内核的下载,并将下载后的数据送回IE内核,让其继续执行解析、执行、渲染的工作。参考图1,示出了本申请的一种IE内核浏览器的页面下载控制方法实施例1的步骤流程图,具体可以包括以下步骤步骤101、启动IE内核浏览器进程,并启动预置的下载进程;在本申请实施例中,所述IE内核浏览器进程是指采用IEdnternet Explorer)浏览器内核的浏览器进程。现有技术中,浏览器内核负责对页面进行下载、解析、执行、渲染, 而在本实施例中,IE浏览器内核仅用于完成解析、执行、渲染的操作,下载的操作由预置的下载进程完成。公知的是,进程是一个正在执行的程序,即计算机中正在运行的程序实例;其可以分配给处理器并作为一个实体由处理器执行。从用户角度来看,浏览器进程可以理解为在任务管理器内所启动的浏览器代表的进程。所述下载进程可以理解为IE内核浏览器的另外一个进程,是一个专门用于下载操作的进程。即所述下载进程专门用于下载,而不做其他操作。作为本申请实施例具体实现的一种示例,所述下载进程内部可以使用WinHTTP (WinHTTP的全称是Microsoft Windows HTTP Services,它提供给开发者一个HTTP客户端应用程序接口,通过这种API借助HTTP 协议给其他的HTTP服务器发送请求)实现一个下载器,和一个下载管理器。即所述下载进程中可以包括一个下载管理器和一些下载器,其中,所述下载管理器可以用于按照预设的下载规则控制页面下载,例如对下载资源的请求进行排序、优化等;下载器则可以用于实现具体的下载操作,并通过下载管理器向IE内核浏览器进程报告下载情况,即下载状态信息。在实际中,这个下载进程就像一个服务,启动后随时等待被调用。在本申请实施例中,所述IE内核浏览器进程启动时,所述下载进程也会启动,或者说,所述IE内核浏览器进程启动则会触发所述下载进程启动,以保证页面在浏览器中的正常展现。步骤102、在所述IE内核浏览器进程中注册通信协议,等待基于相应通信协议的页面下载请求;在具体实现中,所述在IE内核浏览器进程中注册通信协议的步骤可以为,使用 IInternetSession接口的RegisterNameSpace方法,在IE内核浏览器进程中注册通信协议,所述通信协议可以包括http协议、https协议、mailto协议和FTP协议等。胃IInternetSession ^Π ^ RegisterNameSpace ^gT^yMSI^ 格式的接口,使用这个方法在IE内核浏览器进程中注册通信协议之后,则所有采用相应通信协议的页面下载请求,都会传送到预设的外壳程序接口,即当发生任何采用相应通信协议(如http、https协议、mailto协议、FTP协议)的页面下载请求时,IE内核会通知或调用预设的外壳程序接口。步骤103、当所述IE内核浏览器进程收到页面下载请求时,将所述页面下载请求发送给下载进程;步骤104、下载进程将所述页面下载请求添加至预先生成的下载任务列表中;步骤105、获取所述页面下载请求对应的页面资源类型,在所述下载任务列表中, 按照所述页面资源类型对页面下载请求进行排序;在实际中,所述页面下载请求中包括URL信息,所述URL信息中包括扩展名信息, 在这种情况下,所述页面下载请求对应的页面资源类型可以通过读取所述扩展名信息获取。步骤106、依次处理所述下载任务列表中的页面下载请求,执行相应的页面下载操作;步骤107、在所述页面下载过程中向IE内核浏览器进程返回下载状态信息。在具体实现中,当IE内核调用在通信协议注册过程中提供的nnternetfrotocol 接口的Mart方法时,通过跨进程通信,将页面下载请求发送到下载进程,并返回操作符E PENDING,通知IE内核操作正在执行中。当下载到数据后,下载进程会通知到发起下载的IE 内核浏览器进程,IE内核浏览器进程调用IE内核提供的nnternetfrotocolSink接口的相关方法,通知IE内核下载进度、下载到的数据等下载状态信息。更具体而言,跨进程通信,是指将一个进程的请求转到另一个进程,在本实施例中即指将IE内核浏览器进程的页面下载请求转到下载进程,并在下载过程中,实时向IE内核报告下载进度和下载数据等下载状态信息。跨进程通信可以使用windows消息机制,并配合内核对象进行数据传输。例如,在IE浏览器进程中注册了 http协议后,一旦有基于http 协议的页面下载请求就会送到预设的浏览器外壳程序中。当IE内核调用所述外壳程序的时候,会将这个页面下载请求的相关信息都传递过来,外壳程序会将这些信息打包(放到一个数据块中,数据块中主要包括url、refresh、cookie等),然后通过Windows系统提供的标准管道通信,将此数据块发送到下载进程。下载过程中向浏览器进程发送的Windows 消息,主要是告诉浏览器当前下载的进度。简而言之,跨进程通信是双方的,首先,IE内核浏览器进程收到页面下载请求后, 会通过跨进程通信,告诉下载进程那些文件需要下载。另一方面,当下载请求执行过程中, 下载进程会向IE内核浏览器进程发送消息,通知其下载进度、下载数据等下载状态信息。本申请实施例主要涉及通过资源排序进行下载优化的方案,是在下载进程控制下载的过程中实现的,也就是说,当浏览器进程接收到IE下载请求时,触发下载进程执行下载,在由下载器正式下载之前,下载管理器会对下载请求对应的资源进行排序。在实际应用中,可以优先下载文本类型的文件(如html、CSS、jS等类型的文件), 将多媒体类型的文件(如图片、flash等大资源的文件)靠后下载,因为网页的展现并不依赖于它们。下载进程中的下载管理器内会有一个下载任务列表,根据优先级,可以确定将新增加的下载任务放到这个表中的那个位置。比如,html、ess、js这些文本类型的文件都是网页打开时必须的,所以可以放入这个表的前面。其他的图片、flash等多媒体类型的文件则放入表尾。下载器会从表头中不停的取任务来开始下载。这样就实现了资源排序。在实际中,每一个页面下载请求都对应一个下载任务,每个下载任务资源类型是ー种。 例如,假设在浏览器中访问http: 360. cn/, IE内核会产生5个下载请求,请求的内容/类型/順序如下http://www. j60. cn/ index, htm ;http://www. 360. cn/360safe. ess ,http://www. 360. cn/product. swf ,http://www. 360. cn/360safe. png ,http://www. 360. cn/frame. htm。按照与IE下载请求产生一致的順序,将上述页面下载请求从IE内核浏览器进程 发送到下载进程。假设现在下载进程内的下载任务列表为空。当我们收到http://WWW. 360. cn/ index, htm的页面下载请求吋,因为表是空的,则直接放入队列内。如表1所示,当前的下载 任务列表中只有ー个请求。表1
权利要求
1.一种IE内核浏览器的页面下载控制方法,其特征在于,包括 启动IE内核浏览器进程,并启动预置的下载进程;在所述IE内核浏览器进程中注册通信协议,等待基于相应通信协议的页面下载请求; 当所述IE内核浏览器进程收到页面下载请求时,将所述页面下载请求发送给下载进程;下载进程将所述页面下载请求添加至预先生成的下载任务列表中; 获取所述页面下载请求对应的页面资源类型,在所述下载任务列表中,按照所述页面资源类型对页面下载请求进行排序;依次处理所述下载任务列表中的页面下载请求,执行相应的页面下载操作; 在所述页面下载过程中向IE内核浏览器进程返回下载状态信息。
2.如权利要求1所述的方法,其特征在于,所述页面下载请求中包括URL信息,所述 URL信息中包括扩展名信息,所述页面下载请求对应的页面资源类型通过读取所述扩展名信息获取。
3.如权利要求1或2所述的方法,其特征在于,还包括所述IE内核浏览器进程依据所述下载状态信息,对下载的页面数据进行解析、执行、 和/或渲染的操作。
4.如权利要求1或2所述的方法,其特征在于,所述在IE内核浏览器进程中注册通信协议的步骤为,使用IInternetSession接口的RegisterNameSpace方法,在IE内核浏览器进程中注册通信协议,所述通信协议包括http协议、https协议、mailto协议和FTP协议。
5.如权利要求1或2所述的方法,其特征在于,所述执行相应的页面下载操作的步骤包括获取所述页面下载请求对应的文件大小信息; 判断所述文件大小信息是否超过预设的文件大小阈值; 若是,则采用多线程下载的方式执行相应页面的下载操作; 否则,采用单线程下载的方式执行相应页面的下载操作。
6.如权利要求1或2所述的方法,其特征在于,在下载进程将所述页面下载请求添加至预先生成的下载任务列表中的步骤之前,还包括下载进程根据所述页面下载请求判断所请求的文件是否已被预先写入缓存中; 若是,则从缓存中提取该文件;若否,则开始执行所述下载进程将页面下载请求添加至预先生成的下载任务列表中的步骤。
7.如权利要求6所述的方法,其特征在于,还包括 将下载的文件写入缓存中。
8.如权利要求7所述的方法,其特征在于,在从缓存中提取文件的步骤之前,还包括 查询该文件写入缓存的时间是否超过预设期限,若是,则开始执行所述下载进程将页面下载请求添加至预先生成的下载任务列表中的步骤;若否,则执行从从缓存中提取相应文件的步骤。
9.一种IE内核浏览器的页面下载控制系统,其特征在于,包括 启动模块,用于启动IE内核浏览器进程,并启动预置的下载进程;协议注册模块,用于在所述IE内核浏览器进程中注册通信协议,等待基于相应通信协议的页面下载请求;请求传送模块,用于在IE内核浏览器进程收到页面下载请求时,将所述页面下载请求发送给下载进程;任务添加模块,用于由下载进程将所述页面下载请求添加至预先生成的下载任务列表中;排序模块,用于获取所述页面下载请求对应的页面资源类型,在所述下载任务列表中, 按照所述页面资源类型对页面下载请求进行排序;下载执行模块,用于依次处理所述下载任务列表中的页面下载请求,执行相应的页面下载操作;状态汇报模块,用于在所述页面下载过程中向IE内核浏览器进程返回下载状态信息。
10.如权利要求9所述的系统,其特征在于,所述页面下载请求中包括URL信息,所述 URL信息中包括扩展名信息,所述页面下载请求对应的页面资源类型通过读取所述扩展名信息获取。
11.如权利要求9或10所述的系统,其特征在于,还包括内核操作模块,用于由所述IE内核浏览器进程依据所述下载状态信息,对下载的页面数据进行解析、执行、和/或渲染的操作。
12.如权利要求9或10所述的系统,其特征在于,所述下载执行模块包括 文件大小获取子模块,用于获取所述页面下载请求对应的文件大小信息;文件大小判断子模块,用于判断所述文件大小信息是否超过预设的文件大小阈值,若是,则调用多线程下载子模块;否则,调用单线程下载子模块;多线程下载子模块,用于采用多线程下载的方式执行相应页面的下载操作; 单线程下载子模块,用于采用单线程下载的方式执行相应页面的下载操作。
13.如权利要求9或10所述的系统,其特征在于,还包括缓存判断模块,用于由下载进程根据所述页面下载请求判断相应的文件是否被预先写入缓存中,若是,则触发缓存提取模块;若否,则触发任务添加模块; 缓存提取模块,用于从缓存中提取该文件。
14.如权利要求13所述的系统,其特征在于,还包括 缓存写入模块,用于将下载的文件写入缓存中。
15.如权利要求14所述的系统,其特征在于,还包括缓存超期判断模块,用于查询该文件写入缓存的时间是否超过预设期限,若是,则调用所述任务添加模块;若否,则调用所述缓存提取模块。
全文摘要
本发明提供了一种IE内核浏览器的页面下载控制方法和系统,所述方法包括启动IE内核浏览器进程,并启动预置的下载进程;在所述IE内核浏览器进程中注册通信协议,等待基于相应通信协议的页面下载请求;当所述IE内核浏览器进程收到页面下载请求时,将所述请求发送给下载进程;下载进程将所述页面下载请求添加至预先生成的下载任务列表中;获取所述页面下载请求对应的页面资源类型,在所述下载任务列表中,按照所述页面资源类型对页面下载请求进行排序;依次处理所述下载任务列表中的页面下载请求,执行相应的页面下载操作,并向IE内核浏览器进程返回下载状态信息。本发明可以有效控制IE内核浏览器的页面下载过程,提高页面下载的效率和稳定性。
文档编号G06F17/30GK102368250SQ201110289109
公开日2012年3月7日 申请日期2011年9月26日 优先权日2011年9月26日
发明者刘鸿威, 唐曦 申请人:奇智软件(北京)有限公司