一种模块加载方法和装置的制造方法

文档序号:8258074阅读:244来源:国知局
一种模块加载方法和装置的制造方法
【技术领域】
[0001]本发明涉及数据处理技术领域,特别是涉及一种模块加载方法和一种模块加载装置。
【背景技术】
[0002]动态网页是跟静态网页相对的一种网页编程技术。静态网页,随着html代码的生成,页面的内容和显示效果就基本上不会发生变化了一一除非修改页面代码。而动态网页则不然,页面代码虽然没有变,但是显示的内容却是可以随着时间、环境或者数据库操作的结果而发生改变的。
[0003]现有技术中,在接收到执行某一动态网页文件的请求时,需要运行该文件的脚本,对该脚本中的模块进行编译,然后加载并运行编译后的模块,尤其在lua-nginx-module关闭代码缓存的场景中,即使每次请求执行的文件脚本中包含相同的模块,也均需要在每次执行文件脚本时,对其中包含的所有模块进行重新编译。显然,这种在每次运行时需要对所有模块重新编译的方式,文件执行效率较低,而且会浪费资源。
[0004]因此,本领域亟需一种新的脚本运行方法,以提高文件执行效率,节省编译模块占用的资源。

【发明内容】

[0005]鉴于上述技术问题,本发明的实施例提出了一种模块加载方法和装置,以便克服上述问题或者至少部分地解决上述问题。
[0006]本发明的实施例公开了一种模块加载方法,所述包括:
[0007]接收对第一文件的执行请求;
[0008]对于所述第一文件的脚本中所包含的第一模块,在预设缓存中查找是否存在编译后的所述第一模块;以及
[0009]若存在,则在所述第一文件的执行内存中加载所述编译后的第一模块。
[0010]进一步,在对于所述第一文件的脚本中所包含的第一模块,在预设缓存中查找是否存在编译后的所述第一模块之前,所述方法进一步包括:
[0011]接收对第二文件的执行请求;
[0012]对所述第二文件的脚本中所包含的所述第一模块进行编译;以及
[0013]将编译后的所述第一模块存储在所述预设缓存中。
[0014]进一步,在所述对于所述第一文件的脚本中所包含的第一模块,在预设缓存中查找是否存在编译后的所述第一模块之前,所述方法进一步包括:
[0015]查找所述第一文件的执行内存中是否存在所述编译后的第一模块,若不存在,再在预设缓存中查找是否存在所述编译后的第一模块。
[0016]进一步,在所述预设缓存中所述编译后的第一模块以哈希表的形式进行存储。
[0017]进一步,所述编译后的第一模块为LUA模块或Python模块。
[0018]本发明的实施例还公开了一种模块加载装置,所述装置包括:
[0019]第一请求接收单元,用于接收对第一文件的执行请求;
[0020]缓存单元,用于缓存模块;
[0021]查找单元,用于对于所述第一文件的脚本中所包含的第一模块,在所述缓存单元中查找是否存在编译后的所述第一模块;以及,
[0022]加载单元,用于在所述查找单元查找到所述编译后的第一模块时,在所述第一文件的执行内存中加载所述编译后的第一模块。
[0023]进一步,所述装置进一步包括:
[0024]第二请求接收单元,用于在所述查找单元查找是否存在所述编译后的第一模块之前,接收对第二文件的执行请求;
[0025]创建单元,用于对所述第二文件的脚本中所包含的所述第一模块进行编译;以及
[0026]存储单元,用于将编译后的所述第一模块存储在所述缓存单元中。
[0027]进一步,所述查找单元,还用于在所述缓存单元中查找是否存在所述编译后的第一模块之前,查找所述第一文件的执行内存中是否存在所述编译后的第一模块,若不存在,再在所述缓存单元中查找是否存在所述编译后的第一模块。
[0028]进一步,在所述缓存单元中所述编译后的第一模块以哈希表的形式进行存储。
[0029]进一步,所述编译后的第一模块为LUA模块或Python模块。
[0030]与现有技术相比,本发明实施例至少包括以下优点:
[0031]本发明实施例通过对文件脚本中的模块进行编译后再预存储,使得在执行文件脚本时,无需重复对脚本中包含的模块进行编译,直接将预存储的模块加载在对应的执行内存中,或直接运行执行内存中的模块即可,从而大大提高了文件执行效率,节省了编译模块所占用的资源。
【附图说明】
[0032]图1是本发明的一种模块加载方法实施例的步骤流程示意图;
[0033]图2是本发明实施例中获得预设缓存中的模块的方法流程示意图;
[0034]图3是本发明的另一种模块加载方法实施例的步骤流程示意图;
[0035]图4是本发明的一种模块加载装置实施例的结构示意图;
[0036]图5是本发明的另一种模块加载装置实施例的结构示意图。
【具体实施方式】
[0037]为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和【具体实施方式】对本发明作进一步详细的说明。
[0038]参照图1,示出了本发明的一种模块加载方法实施例的步骤流程图,具体可以包括如下步骤:
[0039]步骤101,接收对第一文件的执行请求。
[0040]模块加载装置在接收到对第一文件的执行请求后,运行该第一文件的脚本,该脚本中可能包含有多个模块,对于该脚本中包含的第一模块,该装置执行步骤102。其中,该第一文件可以为动态网页文件,第一模块可以是脚本中包含的任一模块。
[0041]步骤102,对于第一文件的脚本中所包含的第一模块,在预设缓存中查找是否存在编译后的弟一t旲块。
[0042]该装置对于脚本中包含的第一模块不是直接进行编译,而是执行本步骤,在预设的缓存中查找是否存在该编译后的第一模块。
[0043]其中,该预设缓存是与执行内存分开的独立的存储空间,该预设缓存中预先存储有多个编译后的模块,这些模块可以是根据需要预先自主编译后存储在该预设缓存中的,也可以是在接收到执行请求后,将根据该请求第一次编译的模块存储在该预设缓存中的。该预设缓存中的模块的获得方法有多种,此处仅为举例。该预设缓存中的模块为初始化的丰旲块。
[0044]若本步骤中可以在预设缓存中查找到该编译后的第一模块,则无需对该第一模块进行编译,直接执行步骤103。若在该预设缓存中没有查找到该编译后的第一模块,则可以对该第一模块进行编译,然后将编译后的该模块存储在该预设缓存中,以便于后续需要该模块时可以直接在预设缓存中查找到,无需再重复编译。
[0045]步骤103,在第一文件的执行内存中加载该编译后的第一模块。
[0046]若上步骤中,该装置查找到该编译后的第一模块,则在本步骤中,该装置即可直接在该第一文件的执行内存中加载该第一模块,然后赋值运行该第一模块。
[0047]本发明实施例通过对文件脚本中的模块进行预存储,使得在执行文件脚本时,无需对脚本中包含的模块进行编译,直接将预存储的模块加载在对应的执行内存中即可,从而大大提高了文件执行效率,节省了编译模块所占用的资源。
[0048]在本发明的另一实施例中,该装置在执行步骤10
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1