CN111177601B - 页面渲染处理方法、装置、设备及可读存储介质 - Google Patents

页面渲染处理方法、装置、设备及可读存储介质 Download PDF

Info

Publication number
CN111177601B
CN111177601B CN201811341354.7A CN201811341354A CN111177601B CN 111177601 B CN111177601 B CN 111177601B CN 201811341354 A CN201811341354 A CN 201811341354A CN 111177601 B CN111177601 B CN 111177601B
Authority
CN
China
Prior art keywords
rendering
page
file
module
access request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811341354.7A
Other languages
English (en)
Other versions
CN111177601A (zh
Inventor
葛佳丽
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Didi Infinity Technology and Development Co Ltd
Original Assignee
Beijing Didi Infinity Technology and Development Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Didi Infinity Technology and Development Co Ltd filed Critical Beijing Didi Infinity Technology and Development Co Ltd
Priority to CN201811341354.7A priority Critical patent/CN111177601B/zh
Publication of CN111177601A publication Critical patent/CN111177601A/zh
Application granted granted Critical
Publication of CN111177601B publication Critical patent/CN111177601B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例提供一种页面渲染处理方法、装置、设备及可读存储介质。本发明实施例的方法,通过预设设置模块的缓存数据的有效时长,根据与客户端的访问请求对应的js文件的存储路径,将js文件载入渲染模块之后,判断缓存中是否存在js文件内的模块的缓存数据;若存在,则将js文件内的模块的缓存数据中缓存时长超过预设有效时长的缓存数据从缓存中删除,并将删除的缓存数据对应的模块重新进行缓存;若不存在,则将js文件内的模块进行缓存;在模块发送变更时,不需要重启NodeJS服务,就可以及时地对缓存中模块的缓存数据进行更新,可以避免出现NodeJS服务仍然使用变更前模块的缓存数据,导致前端页面更新不及时的问题。

Description

页面渲染处理方法、装置、设备及可读存储介质
技术领域
本发明实施例涉及网页渲染技术领域,尤其涉及一种页面渲染处理方法、装置、设备及可读存储介质。
背景技术
NodeJS是一种JavaScript运行环境,能够使得JavaScript脱离浏览器运行,也称为Node.js。在前后端之间构建NodeJS服务作为中间层来承担转换数据、串接服务、路由设计等职能,以实现前后端更好的解耦。
目前,NodeJS服务本身存在模块缓存加载机制,在进行页面渲染时,服务端在将客户端请求对应的js文件载入渲染模块之后,会判断该js文件内的各个模块(js文件内部调用的库函数或者其他方法)是否已经缓存过,若没有缓存过则将该js文件内的各个模块进行缓存;若已经缓存过则无需再次缓存。
但是NodeJS服务只有在重启时,才会清空缓存数据。若js文件内的模块发生变更时,NodeJS服务并不会更新该变更模块的缓存数据,在重启之前NodeJS服务仍然使用变更前模块的缓存数据,导致前端页面更新不及时。
发明内容
本发明实施例提供一种页面渲染处理方法、装置、设备及可读存储介质,用以解决现有技术中NodeJS服务只有在重启时,才会清空缓存数据。若js文件内的模块发生变更时,NodeJS服务并不会更新该变更模块的缓存数据,在重启之前NodeJS服务仍然使用变更前模块的缓存数据,导致前端页面更新不及时的问题。
本发明实施例的一个方面是提供一种页面渲染处理方法,包括:
根据与客户端的访问请求对应的js文件的存储路径,将所述js文件载入渲染模块;
判断缓存中是否存在所述js文件内的模块的缓存数据;
若存在,则将所述js文件内的模块的缓存数据中缓存时长超过预设有效时长的缓存数据从缓存中删除,并将删除的缓存数据对应的模块重新进行缓存;
若不存在,则将所述js文件内的模块进行缓存;
调用所述渲染模块的渲染方法,获取与所述访问请求对应的页面数据和页面代码;
根据所述页面数据和所述页面代码进行页面渲染处理。
本发明实施例的另一个方面是提供一种页面渲染处理装置,包括:
载入模块,用于根据与客户端的访问请求对应的js文件的存储路径,将所述js文件载入渲染模块;
缓存数据更新模块,用于:判断缓存中是否存在所述js文件内的模块的缓存数据;若存在,则将所述js文件内的模块的缓存数据中缓存时长超过预设有效时长的缓存数据从缓存中删除,并将删除的缓存数据对应的模块重新进行缓存;若不存在,则将所述js文件内的模块进行缓存;
渲染处理模块,用于:调用所述渲染模块的渲染方法,获取与所述访问请求对应的页面数据和页面代码;根据所述页面数据和所述页面代码进行页面渲染处理。
本发明实施例的另一个方面是提供一种页面渲染处理设备,包括:
存储器,处理器,以及存储在所述存储器上并可在所述处理器上运行的计算机程序,
所述处理器运行所述计算机程序时实现上述所述的方法。
本发明实施例的另一个方面是提供一种计算机可读存储介质,存储有计算机程序,
所述计算机程序被处理器执行时实现上述所述的方法。
本发明实施例提供的页面渲染处理方法、装置、设备及可读存储介质,通过预设设置模块的缓存数据的有效时长,根据与客户端的访问请求对应的js文件的存储路径,将所述js文件载入渲染模块之后,判断缓存中是否存在所述js文件内的模块的缓存数据;若存在,则将所述js文件内的模块的缓存数据中缓存时长超过预设有效时长的缓存数据从缓存中删除,并将删除的缓存数据对应的模块重新进行缓存;若不存在,则将所述js文件内的模块进行缓存;在模块发送变更时,不需要重启NodeJS服务,就可以及时地对缓存中模块的缓存数据进行更新,可以避免出现NodeJS服务仍然使用变更前模块的缓存数据,导致前端页面更新不及时的问题。
附图说明
图1为本发明实施例一提供的页面渲染方法流程图;
图2为本发明实施例二提供的页面渲染方法流程图;
图3为本发明实施例三提供的页面渲染处理装置的结构示意图;
图4为本发明实施例四提供的页面渲染处理装置的结构示意图;
图5为本发明实施例五提供的页面渲染处理设备的结构示意图。
通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本发明实施例构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明实施例的一些方面相一致的装置和方法的例子。
首先对本发明实施例所涉及的名词进行解释:
Juicer:是一个高效、轻量的前端(Javascript)模板引擎,效率和易用是它追求的目标。它可以运行在Node.js环境中。
此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。在以下各实施例的描述中,“多个”的含义是两个以上,除非另有明确具体的限定。
下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。
实施例一
图1为本发明实施例一提供的页面渲染方法流程图。本发明实施例针对现有技术中NodeJS服务只有在重启时,才会清空缓存数据。若js文件内的模块发生变更时,NodeJS服务并不会更新该变更模块的缓存数据,在重启之前NodeJS服务仍然使用变更前模块的缓存数据,导致前端页面更新不及时的问题,提供了页面渲染方法。
如图1所示,该方法具体步骤如下:
步骤S101、根据与客户端的访问请求对应的js文件的存储路径,将js文件载入渲染模块。
本实施例中,客户端可以为浏览器。在用户打开浏览器、或者打开网页、或者下载数据等情况下,客户端向服务端发送访问请求。服务器端可以通过预先配置的服务端口监听客户端的访问请求。
在接收到客户端的访问请求之后,服务端可以根据访问请求中的URL匹配对应路由,获得对应的路由句柄;获取当前的NodeJS环境的类型,根据当前NodeJS环境的类型获取当前的文件根目录;进一步地,根据路由句柄和当前的文件根目录可以获取到访问请求对应的js文件的存储路径。
具体的,根据请求头中的testEnv参数获取当前请求对应的文件根目录,根据访问请求中的URL等参数信息组合出当前请求对应的文件路径以及文件名称。根据该文件名称的后缀,若对应的文件类型为node文件,并且对应的文件路径中存在与该文件名称同名的js文件,则确定存在当前访问请求对应的js文件,可以得到当前访问请求对应的js文件的存储路径,后续可以对js文件进行渲染处理。
在获取到访问请求对应的js文件的存储路径之后,服务端可以根据访问请求对应的js文件的存储路径,通过require方法将js文件载入渲染模块。
步骤S102、判断缓存中是否存在js文件内的模块的缓存数据。
其中,js文件内的模块是指js文件内部调用的其他库函数或者其他方法。
通常,将访问请求对应的js文件载入渲染模块之后,需要将js文件内的模块进行缓存。
本实施例中,在将js文件内的模块进行缓存之前,首先判断缓存中是否存在js文件内的模块的缓存数据;若存在执行步骤S103,对缓存中已有的模块的缓存数据进行更新;若不存在执行步骤S104,对js文件内的所有模块进行缓存。
步骤S103、若存在,则将js文件内的模块的缓存数据中缓存时长超过预设有效时长的缓存数据从缓存中删除,并将删除的缓存数据对应的模块重新进行缓存。
本实施例中,若缓存中存在js文件内的模块的缓存数据,则根据缓存数据的缓存时间,计算缓存数据的缓存时长;比较缓存数据的缓存时长与预设有效时长的大小,来判断缓存中的js文件内的模块的缓存数据是否超时。若缓存数据的缓存时长大于预设有效时长,则确定缓存数据超时;将超时的缓存数据删除,并将删除的缓存数据对应的模块重新进行缓存。若缓存数据的缓存时长小于或者等于预设有效时长,则确定缓存数据没有超时。
另外,在js文件内的模块的缓存数据重新进行缓存之后,记录新的缓存数据对应的缓存时间,以便于在缓存数据超时后对该缓存数据进行更新。
其中,预设有效时长可以由技术人员根据实际需要进行设定,例如,预设有效时长可以设定为5分钟,本实施例此处不做具体限定。
本实施例中,预设有效时长越短,对js文件内的模块的缓存数据更新越频繁;这样,当js文件内的模块有更改时,对更改的模块的缓存数据更新的越及时,可以避免出现NodeJS服务仍然使用变更前模块的缓存数据,导致前端页面更新不及时的问题。但是预设有效时长越短,服务端的性能都会有所降低,因此,设定一个合适的有效时长,既保证js文件内的模块的缓存数据能够及时更新,又可以避免对服务端性能造成较大的影响。
步骤S104、若不存在,则将js文件内的模块进行缓存。
本实施例中,若缓存中不存在js文件内的模块的缓存数据,则将js文件内的模块进行缓存。
另外,对js文件内的模块进行缓存后,记录模块的缓存数据对应的缓存时间,以便于在缓存数据超时后对缓存数据进行更新。
步骤S105、调用渲染模块的渲染方法,获取与访问请求对应的页面数据和页面代码。
在将客户端的访问请求对应的js文件载入渲染模块,并将该js文件内的所有模块的缓存数据缓存之后,调用渲染模块的渲染方法,获取与访问请求对应的页面数据和页面代码。
本实施例中,获取与访问请求对应的页面数据和页面代码可以采用现有技术中进行页面渲染时根据访问请求获取对应的页面数据和页面代码的方法实现,本实施例此处不再赘述。
步骤S106、根据页面数据和页面代码进行页面渲染处理。
本实施例中,在获取到访问请求对应的页面数据和页面代码之后,若页面数据中不包括不需要页面渲染的标识信息,则根据页面数据和页面代码进行页面渲染处理。
其中,不需要页面渲染的标识信息可以是重定向标识信息、或者数据页面标识信息。重定向标识信息用于表示访问请求对应的页面是重定向页面、不需要页面渲染,数据页面标识信息用于表示访问请求对应的页面是只要求反馈数据、不需要页面渲染的页面。
本发明实施例通过预设设置模块的缓存数据的有效时长,根据与客户端的访问请求对应的js文件的存储路径,将js文件载入渲染模块之后,判断缓存中是否存在js文件内的模块的缓存数据;若存在,则将js文件内的模块的缓存数据中缓存时长超过预设有效时长的缓存数据从缓存中删除,并将删除的缓存数据对应的模块重新进行缓存;若不存在,则将js文件内的模块进行缓存;在模块发送变更时,不需要重启NodeJS服务,就可以及时地对缓存中模块的缓存数据进行更新,可以避免出现NodeJS服务仍然使用变更前模块的缓存数据,导致前端页面更新不及时的问题。
实施例二
图2为本发明实施例二提供的页面渲染方法流程图。在上述实施例一的基础上,本实施例中,在NodeJS服务启动时,创建渲染主进程,子进程容器和请求队列,通过渲染主进程接收客户端发送的访问请求,获取访问请求对应的js文件的存储路径;并将访问请求加入请求队列中;渲染主进程确定一个目标子进程,并将该访问请求交由目标子进程进行后续的渲染处理,目标子进程将最终的渲染处理结果发送给渲染主进程。如图2所示,该方法具体步骤如下:
步骤S201、在NodeJS服务启动时,创建渲染主进程,子进程容器和请求队列。
本实施例中,在NodeJS服务启动时,创建渲染主进程,子进程容器和请求队列。请求队列用于存储多个访问请求。渲染主进程可以向子进程容器中创建一个或者多个用于进行页面渲染处理的子进程,可以实现通过多个子进程并行地对多个访问请求进行页面渲染,可以显著提高服务端的页面渲染效率。
步骤S202、通过渲染主进程,接收客户端发送的访问请求。
本实施例中,客户端可以为浏览器。在用户打开浏览器、或者打开网页、或者下载数据等情况下,客户端向服务端发送访问请求。
在服务器端,由渲染主进程通过预先配置的服务端口监听客户端的访问请求。
步骤S203、通过渲染主进程,获取访问请求对应的js文件的存储路径。
本实施例中,通过渲染主进程从访问请求的请求头中提取出文件根目录;根据访问请求中的URL,以及文件根目录,确定访问请求对应的js文件的存储路径。
具体的,渲染主进程可以根据请求头中的testEnv参数获取当前请求对应的文件根目录,根据访问请求中的URL等参数信息组合出当前请求对应的文件路径以及文件名称。根据该文件名称的后缀,若对应的文件类型为node文件,并且对应的文件路径中存在与该文件名称同名的js文件,则确定存在当前访问请求对应的js文件,可以得到当前访问请求对应的js文件的存储路径,后续可以对js文件进行渲染处理。
本实施例中,在由渲染主进程获取到访问请求对应的js文件的存储路径之后,渲染主进程将访问请求对应的js文件的存储路径连同其他必要参数一起发送给一个目标子进程,由目标子进程对该访问请求进行后续的页面渲染处理。而渲染主进程可以进行其他访问请求的处理。
步骤S204、通过渲染主进程,在子进程容器中获取一个连接状态的目标子进程。
其中,目标子进程负责对本次访问请问进行后续的页面渲染处理,得到渲染处理结果,并将渲染处理结果发送给渲染主进程。
具体地,渲染主进程判断子进程容器中是否存在连接状态的子进程,若子进程容器中存在连接状态的子进程,则可以从子进程容器中随机选取一个子进程作为目标子进程。
若子进程容器中不存在连接状态的子进程,则渲染主进程在子进程容器中新创建一个连接状态的子进程,并将新创建的该子进程作为目标子进程。
另外,渲染主进程可以实时地监听子进程容器中的各个子进程的异常事件;若监听到子进程容器中某一子进程的异常事件,则通过渲染主进程切断该子进程的连接状态,并删除该子进程,以确保子进程的异常不会对主进程造成影响。
其中,异常事件至少包括错误事件、关闭事件和退出事件。
步骤S205、通过渲染主进程,将访问请求加入请求队列中。
本实施例中,渲染主进程将访问请求加入请求队列中,在接收到目标子进程发送的渲染处理结果之后,渲染主进程将访问请求从请求队列中删除。
可选的,为了对不同的访问请求进行区分,可以为访问请求生成访问请求的标识信息,该标识信息可以用于唯一标识该访问请求。用标识信息对访问请求进行标记后,将访问请求放入请求队列中。
步骤S206、通过渲染主进程将访问请求的预设参数值发送给目标子进程,预设参数值包括访问请求对应的js文件的存储路径。
其中,预设参数值包括访问请求中的进行后续页面渲染处理中必须的参数值。例如,预设参数值可以包括:请求头,请求URL,请求方法(如GET或者POST方法),请求入口参数,请求协议,请求IP,cookie,对应的js文件的存储路径等。
本实施例中,渲染主进程将访问请求的预设参数值发送给目标子进程,而其他页面渲染处理中不会用到的参数则不需向目标子进程发送,以避免冗余数据的传输,可以提高服务端的处理性能。
另外,渲染主进程可以根据访问请求的预设参数值生成消息对象,将消息对象以消息事件的方式发送给目标子进程。目标子进程可以实时地监听到渲染主进程的消息事件,从而可以接收到渲染主进程发送的消息对象。
可选的,为了将渲染主进程发送的包括页面渲染处理所必需的参数值的消息对象与其他消息对象进行区分,渲染主进程可以将包括访问请求的预设参数值的消息对象的类型设置为渲染处理类型。例如可以用“render”表示渲染处理类型。
目标子进程在接收到类型为渲染处理类型的消息对象之后,根据该消息对象中的数据进行后续步骤的页面渲染处理。
步骤S207、通过目标子进程根据访问请求对应的js文件的存储路径,将js文件载入渲染模块。
目标子进程在接收到类型为渲染处理类型的消息对象之后,可以根据消息对象中的访问请求对应的js文件的存储路径,通过require方法将js文件载入渲染模块。
步骤S208、通过目标子进程,判断缓存中是否存在js文件内的模块的缓存数据。
其中,js文件内的模块是指js文件内部调用的其他库函数或者其他方法。
通常,将访问请求对应的js文件载入渲染模块之后,需要将js文件内的模块进行缓存。
本实施例中,目标子进程在将js文件内的模块进行缓存之前,首先判断缓存中是否存在js文件内的模块的缓存数据;若存在执行步骤S103,对缓存中已有的模块的缓存数据进行更新;若不存在执行步骤S104,对js文件内的所有模块进行缓存。
步骤S209、若存在,则通过目标子进程,将js文件内的模块的缓存数据中缓存时长超过预设有效时长的缓存数据从缓存中删除,并将删除的缓存数据对应的模块重新进行缓存。
本实施例中,若缓存中存在js文件内的模块的缓存数据,则目标子进程根据缓存数据的缓存时间,计算缓存数据的缓存时长;比较缓存数据的缓存时长与预设有效时长的大小,来判断缓存中的js文件内的模块的缓存数据是否超时。若缓存数据的缓存时长大于预设有效时长,则目标子进程确定缓存数据超时;将超时的缓存数据删除,并将删除的缓存数据对应的模块重新进行缓存。若缓存数据的缓存时长小于或者等于预设有效时长,则目标子进程确定缓存数据没有超时。
另外,目标子进程在js文件内的模块的缓存数据重新进行缓存之后,记录新的缓存数据对应的缓存时间,以便于在缓存数据超时后对该缓存数据进行更新。
其中,预设有效时长可以由技术人员根据实际需要进行设定,例如,预设有效时长可以设定为5分钟,本实施例此处不做具体限定。
本实施例中,预设有效时长越短,对js文件内的模块的缓存数据更新越频繁;这样,当js文件内的模块有更改时,对更改的模块的缓存数据更新的越及时,可以避免出现NodeJS服务仍然使用变更前模块的缓存数据,导致前端页面更新不及时的问题。但是预设有效时长越短,服务端的性能都会有所降低,因此,设定一个合适的有效时长,既保证js文件内的模块的缓存数据能够及时更新,又可以避免对服务端性能造成较大的影响。
步骤S210、若不存在,则通过目标子进程,将js文件内的模块进行缓存。
本实施例中,若缓存中不存在js文件内的模块的缓存数据,则目标子进程将js文件内的模块进行缓存。
另外,目标子进程对js文件内的模块进行缓存后,记录模块的缓存数据对应的缓存时间,以便于在缓存数据超时后对缓存数据进行更新。
步骤S211、通过目标子进程,调用渲染模块的渲染方法,获取与访问请求对应的页面数据和页面代码。
在将客户端的访问请求对应的js文件载入渲染模块,并将该js文件内的所有模块的缓存数据缓存之后,调用渲染模块的渲染方法,获取与访问请求对应的页面数据和页面代码。
本实施例中,获取与访问请求对应的页面数据和页面代码可以采用现有技术中进行页面渲染时根据访问请求获取对应的页面数据和页面代码的方法实现,本实施例此处不再赘述。
步骤S212、通过目标子进程,根据页面数据和页面代码进行页面渲染处理,并将渲染处理结果发送给渲染主进程。
本实施例中,在获取到访问请求对应的页面数据和页面代码之后,若页面数据中不包括不需要页面渲染的标识信息,则目标子进程根据页面数据和页面代码进行页面渲染处理。
其中,不需要页面渲染的标识信息可以是重定向标识信息、或者数据页面标识信息。重定向标识信息用于表示访问请求对应的页面是重定向页面、不需要页面渲染,数据页面标识信息用于表示访问请求对应的页面是只要求反馈数据、不需要页面渲染的页面。
可选的,目标子进程可以为包含渲染处理结果的消息对象的类型设置为渲染结果反馈类型。例如可以用“return”表示渲染结果反馈类型。
可选的,可以预先将页面代码中需要进行渲染处理的部分代码进行隔离。在页面代码中以预设起始标识信息和预设终止标识信息将需要进行渲染处理的部分代码进行隔离,预设起始标识信息和预设终止标识信息中间的代码为需要进行渲染处理的部分代码。
目标子进程根据页面数据和页面代码进行页面渲染处理时,判断页面代码中是否包括预设起始标识信息和预设终止标识信息;若页面代码中包括预设起始标识信息和预设终止标识信息,则对页面代码中处于预设起始标识信息和预设终止标识信息之间的代码进行页面渲染处理。
其中,预设起始标识信息和预设终止标识信息可以由技术人员根据实际需要进行设定,本实施例此处不做具体限定。例如,预设起始标识信息可以为“/**----NodeJsBegin----**/”,预设终止标识信息可以为“/**----NodeJs End----**/”。目标子进程根据页面数据和页面代码进行页面渲染处理时,判断页面代码中是否包含以'/**----NodeJsBegin----**/'开始并且以'/**----NodeJs End----**/'结束的代码,若包含,通过juicer模板引擎将页面数据中的对应数据渲染至页面代码中的对应代码区块,实现js渲染。
可选的,目标子进程根据页面数据和页面代码进行页面渲染处理时,判断页面代码中是否包括node标签;若页面代码中是否包括node标签,则对页面代码中处于node标签中的代码进行页面渲染处理。
其中,node标签是以“<node type="text/template">”作为开始,以“</node>”作为结尾的一组标签。目标子进程根据页面数据和页面代码进行页面渲染处理时,判断页面代码中是否包含以'<node type="text/template">'开始并且以'</node>'结束的html代码,若包含,通过juicer模板引擎将页面数据中的对应数据渲染至页面代码中的对应代码区块,实现html渲染。
步骤S213、通过渲染主进程将渲染处理结果发送给客户端。
其中,渲染处理结果包括渲染处理后的页面数据、页面代码、渲染是否成功、对应的访问请求的标识信息。
另外,目标子进程可以将渲染处理结果封装成消息对象,将消息对象以消息事件的方式发送给渲染主进程。渲染主进程可以实时地监听到目标子进程的消息事件,从而可以接收到目标子进程发送的消息对象。
渲染主进程可以监听目标子进程的消息事件,从而可以接收到目标子进程发送的消息对象。渲染主进程将消息对应中的渲染处理结果发送给客户端。
可选的,若渲染处理结果中的页面数据中包括cookie,则设置cookie失效时间。其中,设置的cookie失效时间的时长可以由技术人员根据实际需要进行设定,例如可以设置cookie失效时间为1天,本实施例此处不做具体限定。
可选的,渲染主进程若确定渲染处理结果中,本次渲染处理不成功,则向客户端发送对应的错误页面。
另外,渲染主进程在接收到渲染处理结果之后,根据渲染处理结果中的访问请求的标识信息,将访问请求从请求队列中删除。
本发明实施例通过在NodeJS服务启动时,创建渲染主进程,子进程容器和请求队列,通过渲染主进程接收客户端发送的访问请求,获取访问请求对应的js文件的存储路径;并将访问请求加入请求队列中;渲染主进程确定一个目标子进程,并将该访问请求交由目标子进程进行后续的渲染处理,目标子进程将最终的渲染处理结果发送给渲染主进程,可以实现对多个访问请求的并行处理,可以提高服务端的页面渲染的效率。
实施例三
图3为本发明实施例三提供的页面渲染处理装置的结构示意图。本发明实施例提供的页面渲染处理装置可以执行页面渲染处理方法实施例提供的处理流程。如图3所示,该页面渲染处理装置30包括:载入模块301,缓存数据更新模块302和渲染处理模块303。
具体地,载入模块301用于根据与客户端的访问请求对应的js文件的存储路径,将js文件载入渲染模块。
缓存数据更新模块302用于:判断缓存中是否存在js文件内的模块的缓存数据;若存在,则将js文件内的模块的缓存数据中缓存时长超过预设有效时长的缓存数据从缓存中删除,并将删除的缓存数据对应的模块重新进行缓存;若不存在,则将js文件内的模块进行缓存。
渲染处理模块303用于:调用渲染模块的渲染方法,获取与访问请求对应的页面数据和页面代码;根据页面数据和页面代码进行页面渲染处理。
本发明实施例提供的装置可以具体用于执行上述实施例一所提供的方法实施例,具体功能此处不再赘述。
本发明实施例通过预设设置模块的缓存数据的有效时长,根据与客户端的访问请求对应的js文件的存储路径,将js文件载入渲染模块之后,判断缓存中是否存在js文件内的模块的缓存数据;若存在,则将js文件内的模块的缓存数据中缓存时长超过预设有效时长的缓存数据从缓存中删除,并将删除的缓存数据对应的模块重新进行缓存;若不存在,则将js文件内的模块进行缓存;在模块发送变更时,不需要重启NodeJS服务,就可以及时地对缓存中模块的缓存数据进行更新,可以避免出现NodeJS服务仍然使用变更前模块的缓存数据,导致前端页面更新不及时的问题。
实施例四
图4为本发明实施例四提供的页面渲染处理装置的结构示意图。在上述实施例三的基础上,本实施例中,如图4所示,页面渲染处理装置30还包括:初始化模块304和主进程模块305。
本实施例中,初始化模块304用于在NodeJS服务启动时,创建渲染主进程,子进程容器和请求队列。
主进程模块305用于:
通过渲染主进程,接收客户端发送的访问请求;通过渲染主进程,从访问请求的请求头中提取出文件根目录;通过渲染主进程,根据访问请求中的URL,以及文件根目录,确定访问请求对应的js文件的存储路径。
可选的,主进程模块305还用于:通过渲染主进程,在子进程容器中获取一个连接状态的目标子进程;通过渲染主进程,将访问请求加入请求队列中;通过渲染主进程将访问请求的预设参数值发送给目标子进程,预设参数值包括访问请求对应的js文件的存储路径。
可选的,载入模块301还用于:通过目标子进程根据访问请求对应的js文件的存储路径,将js文件载入渲染模块。
可选的,主进程模块305还用于:通过渲染主进程,实时地监听子进程容器中的各个子进程的异常事件,异常事件至少包括错误事件、关闭事件和退出事件;若监听到子进程容器中某一子进程的异常事件,则通过渲染主进程切断该子进程的连接状态,并删除该子进程。
可选的,缓存数据更新模块302还用于:
通过目标子进程,判断缓存中是否存在js文件内的模块的缓存数据;若存在,则通过目标子进程,将js文件内的模块的缓存数据中缓存时长超过预设有效时长的缓存数据从缓存中删除,并将删除的缓存数据对应的模块重新进行缓存;若不存在,则通过目标子进程,将js文件内的模块进行缓存。
渲染处理模块303还用于:通过目标子进程,调用渲染模块的渲染方法,获取与访问请求对应的页面数据和页面代码;通过目标子进程,根据页面数据和页面代码进行页面渲染处理,得到渲染处理结果;通过目标子进程将渲染处理结果发送给渲染主进程。
可选的,渲染处理模块303还用于:
判断页面代码中是否包括预设起始标识信息和预设终止标识信息;
若页面代码中包括预设起始标识信息和预设终止标识信息,则对页面代码中处于预设起始标识信息和预设终止标识信息之间的代码进行页面渲染处理。
可选的,渲染处理模块303还用于:
判断页面代码中是否包括node标签;若页面代码中是否包括node标签,则对页面代码中处于node标签中的代码进行页面渲染处理。
可选的,渲染处理模块303还用于:
若页面数据中包括cookie,则设置cookie失效时间。
可选的,主进程模块305还用于:
通过渲染主进程将访问请求从请求队列中删除。
本发明实施例提供的装置可以具体用于执行上述实施例二所提供的方法实施例,具体功能此处不再赘述。
本发明实施例通过在NodeJS服务启动时,创建渲染主进程,子进程容器和请求队列,通过渲染主进程接收客户端发送的访问请求,获取访问请求对应的js文件的存储路径;并将访问请求加入请求队列中;渲染主进程确定一个目标子进程,并将该访问请求交由目标子进程进行后续的渲染处理,目标子进程将最终的渲染处理结果发送给渲染主进程,可以实现对多个访问请求的并行处理,可以提高服务端的页面渲染的效率。
实施例五
图5为本发明实施例五提供的页面渲染处理设备的结构示意图。如图5所示,该页面渲染处理设备50包括:处理器501,存储器502,以及存储在存储器502上并可由处理器501执行的计算机程序。
处理器501在执行存储在存储器502上的计算机程序时实现上述任一方法实施例提供的页面渲染处理方法。
本发明实施例通过预设设置模块的缓存数据的有效时长,根据与客户端的访问请求对应的js文件的存储路径,将js文件载入渲染模块之后,判断缓存中是否存在js文件内的模块的缓存数据;若存在,则将js文件内的模块的缓存数据中缓存时长超过预设有效时长的缓存数据从缓存中删除,并将删除的缓存数据对应的模块重新进行缓存;若不存在,则将js文件内的模块进行缓存;在模块发送变更时,不需要重启NodeJS服务,就可以及时地对缓存中模块的缓存数据进行更新,可以避免出现NodeJS服务仍然使用变更前模块的缓存数据,导致前端页面更新不及时的问题。
另外,本发明实施例还提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述任一方法实施例提供的页面渲染处理方法。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求书指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求书来限制。

Claims (18)

1.一种页面渲染处理方法,其特征在于,包括:
在NodeJS服务启动时,创建渲染主进程,子进程容器和请求队列;
通过所述渲染主进程,在所述子进程容器中获取一个连接状态的目标子进程;
通过所述渲染主进程,将客户端发送的访问请求加入所述请求队列中;
通过所述渲染主进程将所述访问请求的预设参数值发送给所述目标子进程,所述预设参数值包括所述访问请求对应的js文件的存储路径;
通过所述目标子进程根据所述访问请求对应的js文件的存储路径,将所述js文件载入渲染模块;
判断缓存中是否存在所述js文件内的模块的缓存数据;其中,所述js文件内的模块为js文件内部调用的其他库函数或者其他方法;
若存在,则将所述js文件内的模块的缓存数据中缓存时长超过预设有效时长的缓存数据从缓存中删除,并将删除的缓存数据对应的模块重新进行缓存;
若不存在,则将所述js文件内的模块进行缓存;
调用所述渲染模块的渲染方法,获取与所述访问请求对应的页面数据和页面代码;
根据所述页面数据和所述页面代码进行页面渲染处理。
2.根据权利要求1所述的方法,其特征在于,还包括:
通过所述渲染主进程,接收客户端发送的访问请求;
通过所述渲染主进程,从所述访问请求的请求头中提取出文件根目录;
通过所述渲染主进程,根据所述访问请求中的URL,以及所述文件根目录,确定所述访问请求对应的js文件的存储路径。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
通过所述渲染主进程,实时地监听所述子进程容器中的各个子进程的异常事件,所述异常事件至少包括错误事件、关闭事件和退出事件;
若监听到所述子进程容器中某一子进程的所述异常事件,则通过所述渲染主进程切断该子进程的连接状态,并删除该子进程。
4.根据权利要求1所述的方法,其特征在于,所述通过所述目标子进程根据所述访问请求对应的js文件的存储路径,将所述js文件载入渲染模块之后,还包括:
通过所述目标子进程,判断缓存中是否存在所述js文件内的模块的缓存数据;
若存在,则通过所述目标子进程,将所述js文件内的模块的缓存数据中缓存时长超过预设有效时长的缓存数据从缓存中删除,并将删除的缓存数据对应的模块重新进行缓存;
若不存在,则通过所述目标子进程,将所述js文件内的模块进行缓存;
通过所述目标子进程,调用所述渲染模块的渲染方法,获取与所述访问请求对应的页面数据和页面代码;
通过所述目标子进程,根据所述页面数据和所述页面代码进行页面渲染处理,得到渲染处理结果;
通过所述目标子进程将所述渲染处理结果发送给所述渲染主进程。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述根据所述页面数据和所述页面代码进行页面渲染处理,包括:
判断所述页面代码中是否包括预设起始标识信息和预设终止标识信息;
若所述页面代码中包括预设起始标识信息和预设终止标识信息,则对所述页面代码中处于所述预设起始标识信息和预设终止标识信息之间的代码进行页面渲染处理。
6.根据权利要求5所述的方法,其特征在于,所述根据所述页面数据和所述页面代码进行页面渲染处理,还包括:
判断所述页面代码中是否包括node标签;
若所述页面代码中是否包括node标签,则对所述页面代码中处于所述node标签中的代码进行页面渲染处理。
7.根据权利要求1所述的方法,其特征在于,在所述根据所述页面数据和所述页面代码进行页面渲染处理之后,还包括:
若所述页面数据中包括cookie,则设置所述cookie失效时间。
8.根据权利要求4所述的方法,其特征在于,所述通过所述目标子进程将所述渲染处理结果发送给所述渲染主进程之后,还包括:
通过所述渲染主进程将所述访问请求从所述请求队列中删除。
9.一种页面渲染处理装置,其特征在于,包括:
初始化模块,用于在NodeJS服务启动时,创建渲染主进程,子进程容器和请求队列;
主进程模块,用于通过所述渲染主进程,在所述子进程容器中获取一个连接状态的目标子进程;通过所述渲染主进程,将客户端发送的访问请求加入所述请求队列中;通过所述渲染主进程将所述访问请求的预设参数值发送给所述目标子进程,所述预设参数值包括所述访问请求对应的js文件的存储路径;
载入模块,用于通过所述目标子进程根据所述访问请求对应的js文件的存储路径,将所述js文件载入渲染模块;
缓存数据更新模块,用于:判断缓存中是否存在所述js文件内的模块的缓存数据;若存在,则将所述js文件内的模块的缓存数据中缓存时长超过预设有效时长的缓存数据从缓存中删除,并将删除的缓存数据对应的模块重新进行缓存;若不存在,则将所述js文件内的模块进行缓存;其中,所述js文件内的模块为js文件内部调用的其他库函数或者其他方法;
渲染处理模块,用于:调用所述渲染模块的渲染方法,获取与所述访问请求对应的页面数据和页面代码;根据所述页面数据和所述页面代码进行页面渲染处理。
10.根据权利要求9所述的装置,其特征在于,所述主进程模块还用于:
通过所述渲染主进程,接收客户端发送的访问请求;
通过所述渲染主进程,从所述访问请求的请求头中提取出文件根目录;
通过所述渲染主进程,根据所述访问请求中的URL,以及所述文件根目录,确定所述访问请求对应的js文件的存储路径。
11.根据权利要求9所述的装置,其特征在于,所述主进程模块还用于:
通过所述渲染主进程,实时地监听所述子进程容器中的各个子进程的异常事件,所述异常事件至少包括错误事件、关闭事件和退出事件;
若监听到所述子进程容器中某一子进程的所述异常事件,则通过所述渲染主进程切断该子进程的连接状态,并删除该子进程。
12.根据权利要求9所述的装置,其特征在于,所述缓存数据更新模块还用于:
通过所述目标子进程,判断缓存中是否存在所述js文件内的模块的缓存数据;若存在,则通过所述目标子进程,将所述js文件内的模块的缓存数据中缓存时长超过预设有效时长的缓存数据从缓存中删除,并将删除的缓存数据对应的模块重新进行缓存;若不存在,则通过所述目标子进程,将所述js文件内的模块进行缓存;
所述渲染处理模块还用于:通过所述目标子进程,调用所述渲染模块的渲染方法,获取与所述访问请求对应的页面数据和页面代码;通过所述目标子进程,根据所述页面数据和所述页面代码进行页面渲染处理,得到渲染处理结果;通过所述目标子进程将所述渲染处理结果发送给所述渲染主进程。
13.根据权利要求9-12任一项所述的装置,其特征在于,所述渲染处理模块还用于:
判断所述页面代码中是否包括预设起始标识信息和预设终止标识信息;
若所述页面代码中包括预设起始标识信息和预设终止标识信息,则对所述页面代码中处于所述预设起始标识信息和预设终止标识信息之间的代码进行页面渲染处理。
14.根据权利要求13所述的装置,其特征在于,所述渲染处理模块还用于:
判断所述页面代码中是否包括node标签;
若所述页面代码中是否包括node标签,则对所述页面代码中处于所述node标签中的代码进行页面渲染处理。
15.根据权利要求9所述的装置,其特征在于,所述渲染处理模块还用于:
若所述页面数据中包括cookie,则设置所述cookie失效时间。
16.根据权利要求12所述的装置,其特征在于,所述主进程模块还用于:
通过所述渲染主进程将所述访问请求从所述请求队列中删除。
17.一种页面渲染处理设备,其特征在于,包括:
存储器,处理器,以及存储在所述存储器上并可在所述处理器上运行的计算机程序,
所述处理器运行所述计算机程序时实现如权利要求1-8中任一项所述的方法。
18.一种计算机可读存储介质,其特征在于,存储有计算机程序,
所述计算机程序被处理器执行时实现如权利要求1-8中任一项所述的方法。
CN201811341354.7A 2018-11-12 2018-11-12 页面渲染处理方法、装置、设备及可读存储介质 Active CN111177601B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811341354.7A CN111177601B (zh) 2018-11-12 2018-11-12 页面渲染处理方法、装置、设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811341354.7A CN111177601B (zh) 2018-11-12 2018-11-12 页面渲染处理方法、装置、设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN111177601A CN111177601A (zh) 2020-05-19
CN111177601B true CN111177601B (zh) 2024-01-05

Family

ID=70649871

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811341354.7A Active CN111177601B (zh) 2018-11-12 2018-11-12 页面渲染处理方法、装置、设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN111177601B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110532491B (zh) * 2019-08-19 2022-05-06 无线生活(杭州)信息科技有限公司 前端页面构建方法及装置
CN111813571A (zh) * 2020-06-13 2020-10-23 立乐教育科技(上海)有限公司 一种基于NodeJS的进程管理方法
CN112507259A (zh) * 2020-12-15 2021-03-16 广州博冠信息科技有限公司 网页加载方法及装置、电子设备、存储介质
CN112861048A (zh) * 2021-03-10 2021-05-28 北京车和家信息技术有限公司 页面加载方法、装置、设备及计算机可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106776761A (zh) * 2016-11-18 2017-05-31 武汉斗鱼网络科技有限公司 一种移动浏览器渲染网页的方法及装置
CN107451181A (zh) * 2017-06-14 2017-12-08 北京小度信息科技有限公司 页面渲染方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110055683A1 (en) * 2009-09-02 2011-03-03 Facebook Inc. Page caching for rendering dynamic web pages

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106776761A (zh) * 2016-11-18 2017-05-31 武汉斗鱼网络科技有限公司 一种移动浏览器渲染网页的方法及装置
CN107451181A (zh) * 2017-06-14 2017-12-08 北京小度信息科技有限公司 页面渲染方法和装置

Also Published As

Publication number Publication date
CN111177601A (zh) 2020-05-19

Similar Documents

Publication Publication Date Title
CN111177601B (zh) 页面渲染处理方法、装置、设备及可读存储介质
CN110290217B (zh) 数据请求的处理方法及装置、存储介质及电子装置
JP5280436B2 (ja) 部分利用可能なコンテンツのアンチウィルス・スキャニング
CN107332908B (zh) 一种数据传输方法及其系统
CN110309029B (zh) 异常数据的采集方法、装置、计算机设备和存储介质
CN108494755B (zh) 一种传输应用程序编程接口api请求的方法及装置
CN111555963A (zh) 消息推送方法、装置、电子设备及存储介质
JP4205323B2 (ja) 配信システム、配信サーバとその配信方法、配信プログラム
CN110457223B (zh) 灰度测试引流方法、装置、代理服务器及可读存储介质
CN108540505B (zh) 一种内容更新方法及装置
CN111638891A (zh) 一种设备升级方法、装置、终端设备和存储介质
CN105893429A (zh) 用于优化web缓存的方法及系统
CN115622906A (zh) 一种应用日志抓取系统及方法
KR101650829B1 (ko) 대상을 획득하는 방법, 장치, 및 시스템
CN117579611A (zh) 数据传输方法、装置、存储介质及电子装置
JP5675548B2 (ja) データ通信制御方法及びデータ通信制御システム
CN110855806A (zh) 域名请求处理方法及装置、服务器
CN111131498A (zh) Url信息更新方法、缓存服务器、设备及存储介质
CN112954008B (zh) 一种分布式任务处理方法、装置、电子设备及存储介质
CN112559570B (zh) 缓存数据获取方法、装置、设备及存储介质
CN114115941A (zh) 资源发送方法、页面渲染方法、装置、电子设备和介质
CN114493875A (zh) 交易执行方法、计算机设备和存储介质
CN109688204B (zh) 基于ndn网络的文件下载方法、节点、终端
JP2005157727A (ja) ログ処理方法及びその処理プログラム並びに実施システム
CN113449300B (zh) 一种分布式服务器自动分配并扫描病毒的方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant