网页加载方法、装置及系统的制作方法_3

文档序号:9326731阅读:来源:国知局
是存储在各个模块对应的模块 资源中。为了在主体资源加载完毕之后,可以运行模块资源的JS文件;所以,在浏览器加载 到模块时,在模块对应的模块资源中提取运行JS文件所需要的JS资源;并将JS资源注册 到预先建立的函数运行池中。其中,函数运行池为浏览器预先建立的,该函数运行池可以是 对象、数组等各种可以存储函数变量的数据结构。
[0088] 例如,在浏览器加载到需要运行的模块时,该模块向函数运行池中注册该模块需 要运行的函数名、参数、上下文等。比如,网页中有模块A和模块B两个模块。当浏览器加 载到模块A和模块B时,该模块A和模块B依照网页加载的顺序依次提取JS参数,JS参数 可以为JS文件的函数名称、参数、上下文和其他参数等。
[0089]
[0090] 由于每个模块均需要本步骤,所以,在加载网页资源的过程中,每个模块的JS资 源均被注册到函数运行池中,从而使得函数运行池包括每个模块的JS资源。
[0091] 由于模块的JS资源已注册到函数运行池中,加载该模块时,不需要运行JS资源, 仅需加载该模块对应模块资源中的其它资源(运行JS文件不需要的资源)。这部分资源可 以是CSS文件对应的资源,在加载CSS文件对应资源之后,可以显示出模块的界面,但是具 体功能无法使用,需等待运行JS文件的JS资源之后,才能够完善模块的功能。
[0092] 例如,一个超链接字符串;在实现这个超链接字符串的过程中,CSS文件主要显示 字符串的字体(宋体、楷体或仿宋体等),JS文件的作用为字符串添加超链接。如果仅运行 CSS文件,则仅显示规定字体的字符串,而字符串还不具有超链接功能。即本申请的技术效 果为先显示出字符串,以便让用户看到有一个直观感受,再为字符串添加超链接,以完善字 符串的具体功能。
[0093] 步骤S303 :在确定所述主体资源加载完成后,将所述函数运行池中每个模块资源 的JS资源注入到与之对应的JS文件中。
[0094] 在所述主体资源加载完成后,触发一个加载完成事件;当浏览器检测到所述加载 完成事件后,确定所述主体资源加载完成。如果检测到主体资源加载完毕,则说明首屏页面 已经展现完毕。此时可以将函数运行池中每个模块的JS资源,注入到每个JS文件中,那么 每个JS文件则可以加载已注入的模块资源。
[0095] 即,向真正的JS文件注入JS资源,使原本应当在网页中间执行的业务逻辑,在首 屏页面加载完毕之后再执行。此时,运行各个模块资源的JS文件时,虽然依旧会阻塞浏览 器的渲染,但是由于网页的首屏页面(即网页的主要可见内容)已经渲染完毕,所以,可以 方便用户对网页整体内容的感知。而JS文件延后执行,即完善模块具体功能的操作(执行 人机交互操作的功能)延后执行;从而可以提高首屏页面的展现效率。
[0096] 本申请在浏览器加载到模块时,为了保证首屏页面的展现效率,暂时不执行模块 内部的JS文件。而是,将运行JS文件所需的模块资源注册到预先建立的函数运行池中,以 便在主体资源加载完毕之后,再统一运行各个模块资源的JS文件。
[0097] 换言之,本申请将原本在加载主体资源过程中执行的程序,延后到主体资源加载 完毕之后再执行。将主体资源中原本在模块资源之后运行的资源,提前到模块资源的JS文 件之前运行。由于主体资源包含网页的主要显示内容,在主体资源加载完毕之后,网页的首 屏页面也就展现完毕。本申请由于延后模块资源的JS文件的加载过程,提前主体资源的加 载过程,所以本申请可以提高网页的首屏展现效率。
[0098] 可以理解的是,在函数运行池中的JS资源被JS模块加载完毕之后,可以清空函数 运行池,以便保证之前加载过的模块资源不被重复运行。
[0099] 从以上内容可以看出本申请具有以下有益效果:
[0100] 本申请将原本设置每个模块资源内部的JS文件,改为设置在网页资源的主体资 源之后。由于网页资源采用由上至下的加载方式,所以,浏览器在加载网页资源的过程为, 先加载头部资源,再加载主体资源,在主体资源加载完成之后,再运行每个模块内部的JS 文件,最后加载尾部资源。
[0101] 由于主体资源包含首屏页面的主要显示内容,因此在主体资源加载完毕之后,即 可显示出网页的首屏页面。然后,浏览器在再加载各个模块资源的JS文件,以完善各个模 块的具体功能。
[0102] 即,本申请将原本在加载主体资源过程中需要执行的业务逻辑,设置在主体资源 加载完成之后再执行;即提前执行主体资源显示首屏页面的程序,延后执行各个模块运行 JS文件的程序,所以本申请可以提高首屏页面展现效率。并且,本申请没有增加额外的资源 请求开销,便可加速首屏页面的展现,从而可以提高网页性能。
[0103] 为了更加清楚表示本申请和现有技术的区别,下面介绍现有技术和本申请中网页 资源的示意图。以主体资源中包括模块资源A和模块资源B为例,参见图5为目前主体资 源的示意图,从图示中可以看出主体资源包含一个公共CSS文件、框架JS文件以及模块资 源A和模块资源B。
[0104] 以模块资源A为例,模块资源A中包含模块资源A自身的CSS文件A、JS文件A、 模块资源1 (运行JS文件所不需要的其它资源)以及JS资源A(运行JS文件所需要的资 源)。模块资源B的构造与模块资源A-样,在此不再赘述。在图5所示的实施例中,开发 人员仅需要关注模块资源A和模块资源B即可,从而可以提高开发效率。
[0105] 如图6所示,为本申请中主体资源的示意图。从图示中可以看出主体资源包含一 个公共CSS文件、框架JS文件以及模块资源A和模块资源B。模块资源A和模块资源B中 的JS文件A和JS文件B设置在主体资源之后,以便可以在执行完成主体资源之后,再运行 模块资源A的JS文件A和模块资源B的JS文件B。
[0106] 从图5和图6可以看出:本申请将原本设置于模块资源内部的JS文件放置于主体 资源之后,从而实现提高首屏页面展现效率的目的。
[0107] 与图2所示的实施例相对应,如图7所示,本申请提供一种网页加载装置,包括:
[0108] 第二接收单元71,用于接收浏览器发送的网页地址;
[0109] 计算单元72,用于计算所述网页地址所需的网页资源;所述网页资源包括至少一 个模块资源,并且,每个模块资源的JS文件均设置于所述主体资源之后;
[0110] 第二发送单元73,用于将所述网页资源发送至所述浏览器。
[0111] 与图3所示的实施例相对应,如图8所示,本申请提供一种网页加载装置,包括:
[0112] 加载单元81,用于加载由服务器发送的网页资源;其中,所述网页资源包括头部 资源、主体资源和尾部资源,所述主体资源包括至少一个模块资源,并且,每个模块资源的 JS文件均设置于所述主体资源之后;
[0113] 注册单元82,用于在所述网页资源中加载到每个模块资源时,在所述模块资源中 提取运行JS文件所需的JS资源,并将所述JS资源注册到预先建立的函数运行池中;
[0114] 确定单元83,用于在确定所述主体资源加载完成;
[0115] 其中,所述确定单元83具体用于:在所述主体资源加载完成后,触发一个加载完 成事件;在检测到所述加载完成事件后,确定所述主体资源加载完成。
[0116] 注入单元84,用于在所述主体资源加载完成后,将所述函数运行池中每个模块的 JS资源注入到与之对应的JS文件中。
[0117] 如图9所示,本申请提供网页加载装置,还包括:
[0118] 清空单元91,用于在将所述函数运行池中每个模块资源的JS资源注入到与之对 应的JS文件中之后,清空所述函数运行池。
[0119] 第一接收单元92,用于接收用户输入的网页地址;其中,所述网页地址与所述网 页资源对应;
[0120] 第一发送单元93,用于向所述服务器发送所述网页地址。
[0121] 从以上内容可以看出本申请具有以下有益效果:
[0122] 本申请应用于浏览器加载具有模块的网页资源的过程,在模块资源中JS文件的
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1