一种资源获取方法与装置的制造方法
【专利摘要】本发明提供一种资源获取方法与装置,方法包括:获取网页主文档;按照对于子资源的获取操作不导致暂停解析网页主文档的规则,解析网页主文档,并根据解析结果获取资源。本发明可以解决采用现有技术中的资源获取方法可能导致资源获取不及时的问题。
【专利说明】
一种资源获取方法与装置
技术领域
[0001]本发明实施例涉及互联网技术领域,尤其涉及一种资源获取方法与装置。
【背景技术】
[0002]浏览器为了完成一个网页的渲染,需要解析网页主文档,并根据解析结果实现将主资源和子资源加载到内存中,进而根据加载的该些资源渲染网页。
[0003]所述网页主文档,是指用于描述渲染网页所需的各种资源的文档。一个网页主文档可以由文档部分组成。不同文档部分,分别用于描述需要获取的不同资源,比如主资源或者子资源。
[0004]所述主资源,一般是指用于渲染网页的基本架构(一般包括网页框架和文字)的资源;所述子资源,一般包括层叠样式表(Cascading Style Sheets,CSS)、JS(JavaScript)脚本需求的资源,以及可以被引用到网页中的图片等。
[0005]现有技术中一般采用单线程解析的方式,逐个解析网页主文档的各个文档部分。当解析到用于描述某子资源的文档部分时,若根据解析结果获取该子资源会花费较多的时间,会导致位于该文档部分之后的其他未解析的文档部分描述的资源获取不及时,从而影响网页的显示速度。
【发明内容】
[0006]本发明实施例提供一种资源获取方法与装置,用以解决采用现有技术中的资源获取方法可能导致资源获取不及时的问题。
[0007]本发明实施例提供一种资源获取方法,包括:
[0008]获取网页主文档;
[0009]按照对于子资源的获取操作不导致暂停解析网页主文档的规则,解析网页主文档,并根据解析结果获取资源。
[0010]本发明实施例还提供一种资源获取装置,包括:
[0011 ]网页主文档获取单元,用于获取网页主文档;
[0012]资源获取单元,用于按照对于子资源的获取操作不导致暂停解析网页主文档的规贝IJ,解析网页主文档,并根据解析结果获取资源。
[0013]本发明实施例提供的一种资源获取方法与装置,考虑到导致现有技术存在资源获取不及时的根本原因,在于在获取子资源时,会暂停对于网页主文档的解析,因此,本发明实施例提供的方法与装置通过按照对于子资源的获取操作不导致暂停解析网页主文档的规则,解析网页主文档,并根据解析结果获取资源,子资源获取过程中不会妨碍其他资源获取,从而即便对于某子资源的获取耗时较长,也不会导致其他资源的获取进程,从而解决了采用现有技术中的资源获取方法可能导致资源获取不及时的问题。
【附图说明】
[0014]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0015]图1为本发明实施例提供的一种资源获取方法的流程图;
[0016]图2为本发明实施例提供的一种资源获取方法的流程图;
[0017]图3为本发明实施例提供的一种资源获取装置的结构示意图。
【具体实施方式】
[0018]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0019]为解决采用现有技术中的资源获取方法可能影响网页的显示,发明人对现有技术中的资源获取方法存在的缺陷进行了研究。经研究发现,按照现有技术,会采用单线程解析的方式,逐个解析网页主文档的各个文档部分,并且,在逐个解析文档部分的过程中,一旦获得对于文档部分的解析结果,就会根据解析结果获取资源。特别地,若获得对于描述子资源的文档部分的解析结果,就会根据该解析结果,进行子资源的获取,同时,会暂停对于网页主文档的解析,直至完成对子资源的获取后,才会继续对网页主文档的未解析部分进行解析。
[0020]采用上述方式,一旦获取子资源的过程耗时过长,就会影响所述未解析部分的解析进程,进而导致不能及时获取所述未解析部分描述的资源。
[0021]基于上述研究,本发明实施例提供一种资源获取方案,用以解决采用现有技术中的资源获取方法可能导致资源获取不及时的问题。以下结合附图,对本发明实施例提供的方案进行详细介绍。
[0022]实施例1
[0023]实施例1提供一种资源获取的方法,用以解决采用现有技术中的资源获取方法可能导致资源获取不及时的问题。
[0024]为便于描述,下文以该方法的执行主体为手机浏览器为例,对本发明实施例提供的该方法进行介绍。
[0025]本方法的实现流程如图1所示,主要包括如下步骤:
[0026]步骤11,获取网页主文档;
[0027]所述网页主文档,是指用于描述渲染网页所需的各种资源的文档。一个网页主文档可以由文档部分组成。不同文档部分,分别用于描述需要获取的不同资源,比如主资源或者子资源。为便于描述,本发明实施例中,可以将用于描述需要获取的主资源的文档部分,称为主资源文档部分;而将用于描述需要获取的子资源的文档部分,称为子资源文档部分。
[0028]所述主资源,一般是指用于渲染网页的基本架构(一般包括网页框架和文字)的资源;所述子资源,一般包括CSS和/或JS脚本需求的资源,以及可以被引用到网页中的图片等。
[0029]每一个网页都存在与之对应的统一资源定位符(Uniform Resoure Locator ,URL),每一个URL都有与之对应的网页主文档。手机浏览器可以根据URL,获取到与该URL对应的网页主文档。
[0030]步骤12,按照对于子资源的获取操作不导致暂停解析网页主文档的规则,解析网页主文档,并根据解析结果获取资源。
[0031]本发明实施例中,在获取到网页主文档后,可以采用边解析网页主文档,边获取资源的方式,进行资源获取。
[0032]具体地,本发明实施例中,可以但不限于采用下述两种方式,进行资源获取:
[0033]方式1:逐个解析网页主文档包含的各文档部分,并在解析到网页主文档包含的、用于描述需要获取的子资源的文档部分时,在不暂停解析网页主文档的情况下,获取子资源。
[0034]方式I是不对主资源和子资源的获取优先级进行区分的前提下实施的方案。按照该方式,完成对某文档部分的解析后,即获取该文档部分描述的资源(可能是主资源,也可能是子资源),并且,在获取该资源的过程,并不暂停解析网页主文档。具体而言,若解析网页主文档是由某线程来执行的,则可以设置另外的线程来执行资源的获取。
[0035]当按照方式I获取资源时,可以在完成所有资源(包括主资源和子资源)的获取后,根据所有资源进行网页渲染;或者,可以在完成部分主资源,以及部分(或全部)子资源后,根据已获取的所有资源进行网页渲染;或者,还可以是在完成全部主资源,以及部分(或全部)子资源后,根据已获取的所有资源进行网页渲染。
[0036]方式2:解析网页主文档包含的、用于描述需要获取的主资源的各文档部分;在根据针对所述各文档部分的解析结果,完成对相应的主资源的获取后,根据网页主文档包含的、用于描述需要获取的子资源的文档部分,获取子资源。
[0037]方式2是优先对主资源进行获取,在主资源获取完毕后再获取子资源的。
[0038]当按照方式2获取资源时,可以在完成部分或所有主资源的获取后,根据已获取到的所有主资源进行网页渲染;或者,还可以是在完成全部主资源,以及部分(或全部)子资源后,根据已获取的所有资源进行网页渲染。
[0039]本申请实施例中,无论是采用方式I还是方式2,考虑到根据部分主资源进行网页渲染后,网页有可能已经包含比较丰富的内容,而对于用户来说,该些内容可能已经足够用户进行浏览,因此,本申请实施例中,可以利用获取到的(有可能是部分或全部主资源),渲染得到包含表示页面渲染完成的进度条的页面(称渲染页面),从而使得用户获知网页的大部分内容已较快地渲染完毕,得到较好的体验。需要说明的是,进度条,是一种用来表示网页的加载进程的界面元素。
[0040]还需要说明的是,利用所有主资源渲染完成的网页,只包含最基本的网页信息,有一部分内容会缺失,比如会缺失动画效果,文字特效等。在利用所有主资源进行页面渲染,得到渲染页面之后,根据获取到的用于渲染页面的部分或所有子资源后,还可以进一步利用获得的子资源进行网页的重新渲染。重新渲染得到的网页,网页内容会被重新排版、布局,且内容完整,没有内容缺失。
[0041]本发明实施例中,若是在获取到全部主资源和全部子资源后,一并利用该些资源进行网页渲染,则这种情况下,可以只进行一次网页渲染,不会产生重新渲染的操作。按该方式渲染得到的网页,包含完整的网页信息,并且具有完整的网页布局与排版。
[0042]本申请实施例中,无论是采用方式I还是方式2,针对主资源文档部分的解析结果的处理方式可以如下:
[0043]手机浏览器可以在本地查找主资源文档部分所描述的主资源并加载到缓存中;或者,也可以向服务器发送主资源获取请求,进而接收服务器响应于主资源获取请求发送的主资源,接收到的主资源可以保存在缓存中。
[0044]无论是采用方式I还是方式2,针对子资源文档部分的解析结果的处理方式可以如下:
[0045]手机浏览器截获针对子资源文档部分描述的子资源的子资源获取请求,并将拦截的子资源获取请求放入子资源获取请求池。手机浏览器可以在本地查找子资源,并将查找到的子资源加载到缓存;或者,也可以向服务器发送子资源获取请求,进而接收服务器响应于子资源获取请求发送的主资源,接收到的子资源可以保存在缓存中。
[0046]采用本实施例1提供的方法,由于考虑到导致现有技术存在资源获取不及时的根本原因,在于在获取子资源时,会暂停对于网页主文档的解析,因此,本发明实施例提供的方法与装置通过按照对于子资源的获取操作不导致暂停解析网页主文档的规则,解析网页主文档,并根据解析结果获取资源,子资源获取过程中不会妨碍其他资源获取,从而即便对于某子资源的获取耗时较长,也不会导致其他资源的获取进程,从而解决了采用现有技术中的资源获取方法可能导致资源获取不及时的问题。
[0047]实施例2
[0048]为了对实施例1提供的方法在实际中的应用流程进行具体说明,实施例2以手机浏览器获取新闻网页为例,介绍一种资源获取方法,用以实现加快网页的显示速度。
[0049]本方法的实现流程如图2所示,主要包括如下步骤:
[0050]步骤21,手机浏览器接收新闻网页的获取指令。
[0051 ] 步骤22,手机浏览器响应于获取指令,获取新闻网页主文档。
[0052]所述新闻网页主文档,是指用于描述渲染新闻网页所需的各种资源的文档。一个新闻网页主文档可以由文档部分组成。所述文档部分包括新闻主资源文档部分和新闻子资源文档部分。新闻主资源文档部分用于描述需要获取的主资源,新闻子资源文档部分用于描述需要获取的子资源。
[0053]步骤23,手机浏览器获取新闻网页资源并根据获取到的资源渲染新闻网页。
[0054]具体地,步骤23可以包括如下子步骤:
[0055]子步骤a,手机浏览器判断手机浏览器是否被设置为处于常规解析模式。比如,手机浏览器可以通过对预先设置的一个字段的值是否为O进行判断,若是,则判定处于常规解析模式,从而执行步骤g。
[0056]需要说明的是,若得到的判断结果为否,则会则判定处于非常规解析模式,从而执行子步骤b。
[0057]子步骤b,截获脚本外部资源请求(相当于截获子资源获取请求)。
[0058]子步骤C,将截获的脚本外部资源请求加入脚本资源请求池。
[0059]在解析过程中,解析到新闻子资源文档部分后,会根据解析结果,向响应的服务器发出对新闻子资源文档部分描述的脚本资源(相当于子资源)的脚本外部资源请求。通过执行子步骤C,可以截获该请求,并将该请求记录在脚本资源请求池中,返回空资源给浏览器包含的用于解析新闻网页主文档的解析器,以使得该解析器忽略掉该脚本外部资源请求,从而继续解析新闻网页主文档。
[0060]子步骤d,判断资源请求池是否为空。
[0061]若该请求池为空,执行子步骤f。若该请求池不为空,则可以执行子步骤e。
[0062]子步骤e,获取资源,进而执行步骤d。
[0063]子步骤e中,获取资源的方式包括:浏览器向服务器发送脚本资源请求池中的各脚本外部资源请求,并将服务器返回的脚本资源加载到缓存。每当有脚本资源获取到的时候,便将相应的脚本外部资源请求从脚本资源请求池中删除。
[0064]子步骤f,重解析排版,并将浏览器的模式设置为常规解析模式,而后执行步骤a。
[0065]子步骤g,读取缓存。
[0066]子步骤h,判断各脚本资源获取是否成功,若是,则执行步骤i,否则,则可以执行步骤j。
[0067]需要说明的是,手机浏览器在进行重解析排版后,即重新解析新闻网页主文档后,解析出新闻子资源文档部分,请求获取新闻子资源文档部分所描述的脚本资源,并在缓存中读取该脚本资源。因为获取的脚本资源可能存在错误,或者与该新闻网页主文档不匹配,那么该脚本资源的读取可能存在失败的情况,因此,需要通过执行步骤h,判断脚本资源的获取是否成功。若是,执行子步骤i。若否,执行子步骤j。
[0068]子步骤i,将获取到的各资源加载到内存。
[0069]子步骤j,忽略不能成功从缓存中获取的脚本资源,取消该脚本的使用,不再发起该脚本资源的网络请求。
[0070]子步骤k,网页渲染。
[0071]利用被成功获取的储存在缓存中的全部脚本资源,对只利用全部新闻主资源渲染获得的网页,进行重新渲染,获得新的渲染网页。相较于只利用全部新闻主资源渲染获得的网页,获得的新的渲染网页,包含更加完整的网页信息,并且具有更加完整的网页布局与排版。采用本实施例2提供的方法,可以解决采用现有技术中的资源获取方法可能导致资源获取不及时的问题。
[0072]实施例3
[0073]实施例3提供一种资源获取装置,可以实现快速的显示新闻网页。
[0074]该装置的具体结构示意图如图3所示,包括下述功能单元:
[0075]网页主文档获取单元31,用于获取网页主文档;
[0076]资源获取单元32,用于按照对于子资源的获取操作不导致暂停解析网页主文档的规则,解析网页主文档,并根据解析结果获取资源。
[0077]资源获取单元32,用于解析网页主文档,并在解析到所述网页主文档包含的、用于描述需要获取的子资源的文档部分时,在不暂停解析所述网页主文档的情况下,获取所述子资源。
[0078]资源获取单元32,用于解析网页主文档包含的、用于描述需要获取的主资源的各文档部分;在根据针对所述各文档部分的解析结果,完成对相应的主资源的获取后,根据所述网页主文档包含的、用于描述需要获取的子资源的文档部分,获取子资源。
[0079]本实施例提供的装置还包括,页面渲染单元,用于当根据解析结果获取到用于渲染页面的部分或所有主资源后,利用所有主资源进行页面渲染,得到渲染页面;
[0080]其中,所述渲染页面中,包含表示页面渲染完成的进度条。
[0081]所述页面渲染单元,还用于,利用所有主资源进行页面渲染,得到渲染页面之后,根据解析结果获取到用于渲染页面的部分或所有子资源后,利用所获得的子资源进行页面渲染。
[0082]页面渲染单元,还用于当根据解析结果获取到用于渲染页面的部分或所有主资源,以及部分或所有子资源后,利用获得的资源进行页面渲染。
[0083]本发明实施例中可以通过硬件处理器(hardware processor)来实现上述相关功能丰吴块。
[0084]采用本实施例提供的上述装置,可以解决采用现有技术中的资源获取方法可能导致资源获取不及时的问题。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0085]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如R0M/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0086]最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
【主权项】
1.一种资源获取方法,其特征在于,包括: 获取网页主文档; 按照对于子资源的获取操作不导致暂停解析网页主文档的规则,解析网页主文档,并根据解析结果获取资源。2.根据权利要求1所述的方法,其特征在于,按照所述规则,解析网页主文档,并根据解析结果获取资源,包括: 逐个解析网页主文档包含的各文档部分,并在解析到所述网页主文档包含的、用于描述需要获取的子资源的文档部分时,在不暂停解析所述网页主文档的情况下,获取所述子资源。3.根据权利要求1所述的方法,其特征在于,按照所述规则,解析网页主文档,并根据解析结果获取资源,包括: 解析网页主文档包含的、用于描述需要获取的主资源的各文档部分; 在根据针对所述各文档部分的解析结果,完成对相应的主资源的获取后,根据所述网页主文档包含的、用于描述需要获取的子资源的文档部分,获取子资源。4.根据权利要求1所述的方法,其特征在于,所述方法还包括: 当根据解析结果获取到用于渲染页面的部分或所有主资源后,利用获取到的主资源进行页面渲染,得到渲染页面; 其中,所述渲染页面中,包含表示页面渲染完成的进度条。5.根据权利要求4所述的方法,其特征在于,利用所有主资源进行页面渲染,得到渲染页面之后,所述方法还包括: 当根据解析结果获取到用于渲染页面的部分或所有子资源后,利用获得的子资源进行页面渲染。6.根据权利要求1所述的方法,其特征在于,所述方法还包括: 当根据解析结果获取到用于渲染页面的部分或所有主资源,以及部分或所有子资源后,利用获得的资源进行页面渲染。7.一种资源获取装置,其特征在于,包括: 网页主文档获取单元,用于获取网页主文档; 资源获取单元,用于按照对于子资源的获取操作不导致暂停解析网页主文档的规则,解析网页主文档,并根据解析结果获取资源。8.根据权利要求7所述的装置,其特征在于: 资源获取单元,用于解析网页主文档,并在解析到所述网页主文档包含的、用于描述需要获取的子资源的文档部分时,在不暂停解析所述网页主文档的情况下,获取所述子资源。9.根据权利要求7所述的装置,其特征在于: 资源获取单元,用于解析网页主文档包含的、用于描述需要获取的主资源的各文档部分;在根据针对所述各文档部分的解析结果,完成对相应的主资源的获取后,根据所述网页主文档包含的、用于描述需要获取的子资源的文档部分,获取子资源。10.根据权利要求7所述的装置,其特征在于,所述装置还包括: 页面渲染单元,用于当根据解析结果获取到用于渲染页面的部分或所有主资源后,利用所有主资源进行页面渲染,得到渲染页面;其中,所述渲染页面中,包含表示页面渲染完成的进度条。
【文档编号】G06F17/30GK105893451SQ201511034137
【公开日】2016年8月24日
【申请日】2015年12月31日
【发明人】王璟瑶
【申请人】乐视移动智能信息技术(北京)有限公司