CN108694215A - 网页缓存预热的方法、装置、电子设备和计算机可读介质 - Google Patents
网页缓存预热的方法、装置、电子设备和计算机可读介质 Download PDFInfo
- Publication number
- CN108694215A CN108694215A CN201710235887.6A CN201710235887A CN108694215A CN 108694215 A CN108694215 A CN 108694215A CN 201710235887 A CN201710235887 A CN 201710235887A CN 108694215 A CN108694215 A CN 108694215A
- Authority
- CN
- China
- Prior art keywords
- cache
- webpage
- web
- unique mark
- warm
- 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.)
- Pending
Links
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明提供一种网页缓存预热的方法、装置、电子设备和计算机可读介质,能够使经过缓存预热的网页请求不需要访问应用服务器,从而保护应用服务器。该方法包括:位于代理服务器的解析模块解析所述代理服务器接收到的网页预热请求的URL地址,以获取所述网页预热请求的唯一标识,将所述网页预热请求的唯一标识作为缓存键,并将应用服务器响应的对应的网页页面内容作为缓存值,然后将所述缓存键和所述缓存值对应存储到缓存模块中;位于代理服务器的解析模块解析所述代理服务器接收到的网页请求的URL地址,以获取所述网页请求的唯一标识,然后将所述网页请求的唯一标识作为键;位于代理服务器的读取模块根据所述键从缓存模块中读取对应的缓存值,并返回。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种网页缓存预热的方法、装置、电子设备和计算机可读介质。
背景技术
反向代理(Reverse Proxy)是指用代理服务器来接受因特网上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给因特网上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器,反向代理可以防止原始服务器过载。以Nginx(即"engine x",是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器)为例,在Nginx用作反向代理的方式下,请求到达Nginx服务器时,Nginx负责将请求转发到应用服务器上,由应用服务器响应请求。
图1是现有技术中网页的缓存预热的架构图。如图1所示,一般将网页页面内容的预热缓存数据存储在缓存系统中,当客户端的请求到达Nginx时,Nginx将请求转发到应用服务器,通过应用服务器上的应用程序从缓存系统中读取和写入网页页面内容的预热缓存数据。现有技术将网页页面内容做数据预热后,响应一次用户请求的流程如图2所示。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
1、不能保护应用程序:现有技术方案中Nginx仅作为请求转发的反向代理服务器,无论网页页面内容数据是否已经预热,在响应请求时都需要通过应用程序去读取缓存数据库。这样用户的访问请求经过Nginx转发总是会到达应用服务器,不能达到保护应用服务的作用。
2、依赖外部存储系统:现有数据预热技术方案需要依赖外部存储系统来存储网页页面内容的预热缓存数据。例如Redis、Memcached等缓存系统。
3、响应速度慢:现有技术缓存内容距离用户“更远”,响应速度慢。在响应用户的一次请求时,需要经过Nginx反向代理转发到应用服务器、应用服务发起网络连接连接外部缓存系统读取网页页面内容的预热缓存数据的多个步骤来处理请求,不能保证快速的响应速度。
发明内容
有鉴于此,本发明实施例提供一种网页缓存预热的方法、装置、电子设备和计算机可读介质,能够使经过缓存预热的网页请求不需要访问应用服务器,从而保护应用服务器,并且还能够提高网页请求的响应速度。
为实现上述目的,根据本发明的一个方面,提供了一种网页缓存预热的方法。
本发明实施例的一种网页缓存预热的方法包括:位于代理服务器的解析模块解析所述代理服务器接收到的网页预热请求的URL地址,以获取所述网页预热请求的唯一标识,将所述网页预热请求的唯一标识作为缓存键,并将应用服务器响应的对应的网页页面内容作为缓存值,然后将所述缓存键和所述缓存值对应存储到缓存模块中;位于代理服务器的解析模块解析所述代理服务器接收到的网页请求的URL地址,以获取所述网页请求的唯一标识,然后将所述网页请求的唯一标识作为键;位于代理服务器的读取模块根据所述键从缓存模块中读取对应的缓存值,并返回。
可选地,位于代理服务器的解析模块解析所述代理服务器接收到的网页预热请求的URL地址,以获取所述网页预热请求的唯一标识包括:以所述网页预热请求的URL地址和/或所述网页预热请求的URL地址中具有唯一标识作用的字符串作为网页预热请求的唯一标识;以及位于代理服务器的解析模块解析所述代理服务器接收到的网页请求的URL地址,以获取所述网页请求的唯一标识包括:以所述网页请求的URL地址和/或所述网页请求的URL地址中具有唯一标识作用的字符串作为网页请求的唯一标识。
可选地,代理服务器为Nginx。
可选地,缓存模块包括Nginx的内存和/或外部存储系统。
可选地,所述方法还包括:位于代理服务器的解析模块和位于代理服务器的读取模块基于Lua脚本实现。
为实现上述目的,根据本发明的另一方面,提供了一种网页缓存预热的装置。
本发明实施例的一种网页缓存预热的装置包括:解析模块,用于解析所述代理服务器接收到的网页预热请求的URL地址,以获取所述网页预热请求的唯一标识,将所述网页预热请求的唯一标识作为缓存键,并将应用服务器响应的对应的网页页面内容作为缓存值,然后将所述缓存键和所述缓存值对应存储到缓存模块中;以及还用于解析所述代理服务器接收到的网页请求的URL地址,以获取所述网页请求的唯一标识,然后将所述网页请求的唯一标识作为键;读取模块,用于根据所述键从缓存模块中读取对应的缓存值,并返回;以及缓存模块,用于以所述网页预热请求的唯一标识作为缓存键,并以应用服务器响应的对应的网页页面内容作为缓存值,存储所述网页预热请求的唯一标识以及对应的网页页面内容。
可选地,所述解析模块还用于:以所述网页预热请求的URL地址和/或所述网页预热请求的URL地址中具有唯一标识作用的字符串作为网页预热请求的唯一标识;以及以所述网页请求的URL地址和/或所述网页请求的URL地址中具有唯一标识作用的字符串作为网页请求的唯一标识。
可选地,所述代理服务器为Nginx。
可选地,所述缓存模块包括Nginx的内存和/或外部存储系统。
可选地,所述装置中,所述解析模块和所述读取模块基于Lua脚本实现。
为实现上述目的,根据本发明的再一方面,提供了一种电子设备。
本发明实施例的一种电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例的网页缓存预热的方法。
为实现上述目的,根据本发明的又一方面,提供了一种计算机可读介质。
本发明实施例的计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例的网页缓存预热的方法。
上述发明中的一个实施例具有如下优点或有益效果:因为采用将Nginx作为反向代理服务器的同时,利用Nginx内存和/或外部存储系统作为存储网页页面内容的预热缓存数据的缓存模块的技术手段,从而可以使得经过预热的网页在响应用户请求时,Nginx可以直接响应用户请求,而无需通过应用程序响应用户,从而克服了现有技术中无论网页页面内容数据是否已经预热,在响应请求时都需要通过应用程序去读取缓存模块(例如外部存储系统)的局限性,并且达到了防止应用服务器过载、保护应用程序的目的;通过采用Nginx内存作为存储网页页面内容的预热缓存数据的缓存模块,从而可以进一步地无需依赖外部存储系统,克服了现有技术中需要依赖外部存储系统的局限性;通过将利用Nginx的反向代理和内存存储数据的功能,使得响应网页页面内容时,无需连接应用程序,甚至无需连接外部存储系统,一次请求只需经过Nginx反向代理这一个步骤就能取到缓存内容,从而减少了网络开销,使得网页页面缓存内容离发起请求的用户“更近”,响应请求的速度更快;通过利用Lua(一种简单、高性能的脚本语言)语言编写脚本实现本发明技术方案中的解析模块、读取模块等,从而可以方便的使用Lua分阶段处理访问请求,实现利用Lua读写Nginx的内存(如:Nginx共享内存、LRU Cache等)的目的。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是现有技术中网页缓存预热的方法可以应用于其中的示例性系统架构图;
图2是现有技术中网页缓存预热的方法中响应一次用户请求的流程示意图;
图3是根据本发明实施例的网页缓存预热的方法的主要步骤的示意图;
图4是本发明实施例的网页缓存预热的方法可以应用于其中的示例性系统架构图;
图5是根据本发明实施例的网页缓存预热的方法中响应一次用户请求的流程示意图;
图6是根据本发明实施例的网页缓存预热的方法进行网页预热的主要流程的示意图;
图7是根据本发明实施例的网页缓存预热的装置的主要模块的示意图;
图8是适于用来实现本申请实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
Nginx是一个高性能的HTTP和反向代理服务器,由于其强大的性能,特别是极强的高并发处理能力和极低的资源占用消耗和极高的稳定性,在大型的网站系统中作为反向代理服务器被广泛使用。
Lua是一种计算器编程语言,它的特点是非常简单、小巧,性能优异,Lua由标准C语言编写,几乎在所有操作系统和平台上都可以运行。在目前的所有脚本引擎中,Lua的速度是基本上是最快的,Lua因为具有这些特性,因此很适合做嵌入式的脚本语言。
本发明实施例的网页缓存预热的技术方案,将Lua语言嵌入Nginx上运行,从而可以方便的扩展Nginx的功能。例如:使用Lua读写Nginx的内存(如:Nginx共享内存、LRUCache),使用Lua分阶段处理访问请求(使用Lua分阶段处理访问请求的逻辑如下:Nginx对请求的响应是分多个阶段的。在Nginx的源码中,通常将一次请求的处理分为11个阶段。例如:NGX_HTTP_ACCESS_PHASE访问权限控制阶段、NGX_HTTP_CONTENT_PHASE内容生成阶段、NGX_HTTP_LOG_PHASE日志记录阶段等。nginx-lua的技术,即针对Nginx分阶段处理请求的特点,开发了与Nginx处理阶段相对应的指令,这些指令在Nginx安装了nginx-lua-module后就可以在Nginx的配置文件中进行配置,并在这些指令中很方便的嵌入Lua脚本。例如:access_by_lua使用Lua处理访问控制的指令、content_by_lua使用Lua处理内容生成的指令、log_by_lua使用Lua处理日志记录的指令等。本发明实施例的技术方案中便涉及了在Nginx的内容生成阶段,使用content_by_lua指令来引入Lua脚本,利用Lua脚本来将网页的内容放入Nginx的共享内存中)。
本发明实施例基于Nginx和Lua技术,提供一种实现网页的缓存预热的技术方案。所谓的网页缓存预热,就是在网页上线前或者将网页访问入口开放之前,把网页页面内容的预热缓存数据放入缓存模块中。如此,在大量的请求集中访问该页面时,便可以通过命中该页面的缓存来响应请求。
本发明实施例利用Nginx高性能的特点和Lua技术,可以将网页页面内容的数据预先存储到Nginx的内存(本发明实施例的后续描述中,以将网页页面内容的预热缓存数据存储到Nginx内存中为例进行详细说明,但网页页面内容的预热缓存数据也可以保存在外部存储系统中,虽然二者的技术效果有所差别,但都可以达到保护应用程序,防止应用服务器过载的目的。后文将加以解释)中,在请求达到Nginx反向代理服务器时,直接读取Nginx的内存中存储的网页页面内容,将网页页面内容返回至发起请求的客户端,可以避免瞬间的巨大流量经过Nginx反向代理的转发到达应用服务器上,从而达到保护应用服务器的目的。
图3是根据本发明实施例的网页缓存预热的方法的主要步骤的示意图。
如图3所示,本发明实施例的一种网页缓存预热的方法主要包括如下步骤:
步骤S31:位于代理服务器的解析模块解析所述代理服务器接收到的网页预热请求的URL地址,以获取所述网页预热请求的唯一标识,将所述网页预热请求的唯一标识作为缓存键,并将应用服务器响应的对应的网页页面内容作为缓存值,然后将所述缓存键和所述缓存值对应存储到缓存模块中。其中,获取所述网页预热请求的唯一标识可以是以所述网页预热请求的URL地址和/或所述网页预热请求的URL地址中具有唯一标识作用的字符串(例如电商领域,商品详情页面对应的URL中包含的SKU序列号等)作为网页预热请求的唯一标识。
步骤S32:位于代理服务器的解析模块解析所述代理服务器接收到的网页请求的URL地址,以获取所述网页请求的唯一标识,然后将所述网页请求的唯一标识作为键。其中,获取所述网页请求的唯一标识可以是以所述网页请求的URL地址和/或所述网页请求的URL地址中具有唯一标识作用的字符串作为网页请求的唯一标识。
步骤S33:位于代理服务器的读取模块根据所述键从缓存模块中读取对应的缓存值,并返回。
本发明实施例中,代理服务器可以为Nginx。
需要说明的是,本发明实施例中,缓存模块可以包括Nginx的内存和/或外部存储系统。外部存储系统例如可以但不限于是Redis、Memcached等外部存储系统的一种或几种。
此外,本发明实施例的网页缓存预热的方法还可以包括:基于Lua脚本实现位于代理服务器的解析模块和位于代理服务器的读取模块。但嵌入Nginx中的脚本可以不只局限于Lua脚本,还可以利用JavaScript,在Nginx中叫做NgxScript。
本发明实施例中,将网页页面内容的预热缓存数据存储在Nginx的内存中,并不会影响其提供反向代理服务的性能。因为Lua语言本身性能非常优秀,基本上是最快的脚本语言。且nginx-lua技术在实现时可以在性能上添加一些较多的考虑(例如:nginx-lua-module提供的所有方法采用非阻塞的,并引入了LuaJIT(LuaJIT是一个即时编译器,可以将Lua编译生成机器码,所以在Nginx中嵌入的Lua代码运行起来性能很高)。因此,利用Lua脚本将网页页面内容的预热缓存数据存储在Nginx的内存中,可以认为是对反向代理的性能没有影响或影响非常微小。
此外,本发明技术方案中,使用的Nginx内存大小是可以根据业务需求进行配置的(例如使用Nginx共享内存,可以在Nginx的配置文件中进行配置)。这个存储量的大小可以根据业务的需求和Nginx所在主机的内存容量综合考虑。
与外部存储系统相比,在存储量上,受限于Nginx在主机的内存大小,是没有外部存储系统那么大的存储量的。但是,网页页面内容的大小一般都不是特别大,且本发明技术方案的适用场景主要是针对需要高并发、高性能的页面访问,例如存放电商中抢购、秒杀等的热点页面,非热点页面一般不予考虑放在Nginx的内存中来存储。举例来说:一般配置例如800M的Nginx共享内存空间,网页页面大小按照平均每个页面250KB来计算,则可以存储超过3200个网页页面。这种存储能力对于存放热点页面而言,已经足够。
需要说明的是,本发明实施例中,使用Nginx内存来存储网页页面内容的预热缓存数据,更多的是出于性能上的考虑,使得一次请求只需经过Nginx反向代理这一个步骤就能取到缓存内容,从而减少了网络开销。但实际实现具体业务的过程中,也可以使用外部存储系统来存储网页页面内容的预热缓存数据。虽然这种情况下,处理请求时,需要Nginx与外部存储系统交互进行数据的存、取,有网络连接的开销,速度并没有直接读取Nginx内存快,但对于达到保护应用程序,防止应用服务器过载、提高页面请求响应速度的目的而言,也已足够。
图4是本发明实施例的网页缓存预热的方法可以应用于其中的示例性系统架构图;图5是根据本发明实施例的网页缓存预热的方法中响应一次用户请求的流程示意图;图6是根据本发明实施例的网页缓存预热的方法进行网页预热的主要流程的示意图。以下结合图4、图5、图6对本发明实施例的网页缓存预热的方法的具体实现进行详细说明。
如图4所示,本发明利用Nginx+Lua技术,将Nginx所在的反向代理服务器的内存作为存储页面内容的缓存模块来使用。经过预热的网页页面内数据,存储在Nginx的内存中。在用户的网页请求经过数据预热的页面时,可以直接读取Nginx的内存中存储的网页页面内容,避免网页请求被大量地转发到应用服务器上。经过数据预热的网页,响应用户的请求的具体流程可参见图5。
如图6所示,本发明实施例的网页缓存预热的技术方案的具体流程如下:
步骤1:使用Lua语言,解析网页预热请求的URL地址得到缓存键Key,网页页面内容作为缓存的内容值Value。将缓存键和缓存值存储到缓存模块(例如可以但不限于是Nginx的内存)中。此步骤可以在在网页上线前或者将网页访问入口开放之前进行,从而可以完成网页页面内容的预热缓存数据的存储;
步骤2:Nginx再次接收到客户端的网页请求后,使用Lua脚本解析网页请求URL得到键Key;
步骤3:Lua脚本根据键Key,读取Nginx内存中的缓存值Value;
步骤4:Nginx将读取到的缓存值Value(即网页页面内容)返回给发起请求的客户端(即用户侧)。
前述具体流程中,解析网页预热请求的URL地址得到缓存键Key,或者解析网页请求得到键Key都可以基于下述逻辑进行:
Nginx在响应每一次网页访问请求时,这个请求的URL可以通过但不限于以下两种方法获取:
1、使用Nginx内置的变量:$request_uri,这个变量可以提取到请求的URL,该变量是Nginx内置的;
2、nginx-lua-module模块也提供了API方法获取请求的URL,针对GET请求:ngx.req.get_uri_args(),针对POST请求:ngx.req.post_uri_args()。
网页的URL地址获取到之后,解析得到缓存键Key(对于被称为“网页预热请求”的请求而言)或者键Key(对于被称为后续的“网页请求”的请求而言),可以将URL地址直接作为缓存键Key或者键Key,将网页页面内容的HTML文档作为缓存值Value。也可以取网页的URL地址中的一段唯一标识作为缓存键Key或者键Key。例如:电商领域的商品详情页的链接中,通常都包含商品的SKU,就可以取该SKU(唯一字符串)作为缓存键Key或者键Key。在具体的实际使用中,可以根据系统的URL构成规则灵活考虑,只要可以唯一标识一个URL,则都可以作为缓存键Key或者键Key。
根据本发明实施例的网页缓存预热的方法可以看出,因为采用将Nginx作为反向代理服务器的同时,利用Nginx内存和/或外部存储系统作为存储网页页面内容的预热缓存数据的缓存模块的技术手段,从而可以使得经过预热的网页在响应用户请求时,Nginx可以直接响应用户请求,而无需通过应用程序响应用户,从而克服了现有技术中无论网页页面内容数据是否已经预热,在响应请求时都需要通过应用程序去读取缓存模块(例如外部存储系统)的局限性,并且达到了防止应用服务器过载、保护应用程序的目的;通过采用Nginx内存作为存储网页页面内容的预热缓存数据的缓存模块,从而可以进一步地无需依赖外部存储系统,克服了现有技术中需要依赖外部存储系统的局限性;通过将利用Nginx的反向代理和内存存储数据的功能,使得响应网页页面内容时,无需连接应用程序,甚至无需连接外部存储系统,一次请求只需经过Nginx反向代理这一个步骤就能取到缓存内容,从而减少了网络开销,使得网页页面缓存内容离发起请求的用户“更近”,响应请求的速度更快;通过利用Lua(一种简单、高性能的脚本语言)语言编写脚本实现本发明技术方案中的解析模块、读取模块等,从而可以方便的使用Lua分阶段处理访问请求,实现利用Lua读写Nginx的内存(如:Nginx共享内存、LRU Cache等)的目的。
图7是根据本发明实施例的网页缓存预热的装置的主要模块的示意图。
如图7所示,本发明实施例的网页缓存预热的装置70主要包括如下模:解析模块701、读取模块702以及缓存模块703。
其中,解析模块701用于解析所述代理服务器接收到的网页预热请求的URL地址,以获取所述网页预热请求的唯一标识,将所述网页预热请求的唯一标识作为缓存键,并将应用服务器响应的对应的网页页面内容作为缓存值,然后将所述缓存键和所述缓存值对应存储到缓存模块中;以及还用于解析所述代理服务器接收到的网页请求的URL地址,以获取所述网页请求的唯一标识,然后将所述网页请求的唯一标识作为键;读取模块702用于根据所述键从缓存模块中读取对应的缓存值,并返回;以及缓存模块703用于以所述网页预热请求的唯一标识作为缓存键,并以应用服务器响应的对应的网页页面内容作为缓存值,存储所述网页预热请求的唯一标识以及对应的网页页面内容。
此外,解析模块701还可用于:以所述网页预热请求的URL地址和/或所述网页预热请求的URL地址中具有唯一标识作用的字符串作为网页预热请求的唯一标识;以及以所述网页请求的URL地址和/或所述网页请求的URL地址中具有唯一标识作用的字符串作为网页请求的唯一标识。
本发明实施例的网页缓存预热的装置70中,涉及到的代理服务器例如但不限于可以是Nginx。
另外,缓存模块703可以包括Nginx的内存和/或外部存储系统。
需要说明的是,装置70中,解析模块701和读取模块702可以但不限于是基于Lua脚本实现。
从以上描述可以看出,因为采用将Nginx作为反向代理服务器的同时,利用Nginx内存和/或外部存储系统作为存储网页页面内容的预热缓存数据的缓存模块的技术手段,从而可以使得经过预热的网页在响应用户请求时,Nginx可以直接响应用户请求,而无需通过应用程序响应用户,从而克服了现有技术中无论网页页面内容数据是否已经预热,在响应请求时都需要通过应用程序去读取缓存模块(例如外部存储系统)的局限性,并且达到了防止应用服务器过载、保护应用程序的目的;通过采用Nginx内存作为存储网页页面内容的预热缓存数据的缓存模块,从而可以进一步地无需依赖外部存储系统,克服了现有技术中需要依赖外部存储系统的局限性;通过将利用Nginx的反向代理和内存存储数据的功能,使得响应网页页面内容时,无需连接应用程序,甚至无需连接外部存储系统,一次请求只需经过Nginx反向代理这一个步骤就能取到缓存内容,从而减少了网络开销,使得网页页面缓存内容离发起请求的用户“更近”,响应请求的速度更快;通过利用Lua(一种简单、高性能的脚本语言)语言编写脚本实现本发明技术方案中的解析模块、读取模块等,从而可以方便的使用Lua分阶段处理访问请求,实现利用Lua读写Nginx的内存(如:Nginx共享内存、LRU Cache等)的目的。
下面参考图8,其示出了适于用来实现本申请实施例的终端设备的计算机系统800的结构示意图。图8示出的终端设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图8所示,计算机系统800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM 803中,还存储有系统800操作所需的各种程序和数据。CPU 801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本申请的系统中限定的上述功能。
需要说明的是,本申请所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括解析模块、读取模块以及缓存模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,解析模块还可以被描述为“用于解析所述代理服务器接收到的网页预热请求的URL地址的模块”。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:位于代理服务器的解析模块解析所述代理服务器接收到的网页预热请求的URL地址,以获取所述网页预热请求的唯一标识,将所述网页预热请求的唯一标识作为缓存键,并将应用服务器响应的对应的网页页面内容作为缓存值,然后将所述缓存键和所述缓存值对应存储到缓存模块中;位于代理服务器的解析模块解析所述代理服务器接收到的网页请求的URL地址,以获取所述网页请求的唯一标识,然后将所述网页请求的唯一标识作为键;位于代理服务器的读取模块根据所述键从缓存模块中读取对应的缓存值,并返回。
根据本发明实施例的技术方案,因为采用将Nginx作为反向代理服务器的同时,利用Nginx内存和/或外部存储系统作为存储网页页面内容的预热缓存数据的缓存模块的技术手段,从而可以使得经过预热的网页在响应用户请求时,Nginx可以直接响应用户请求,而无需通过应用程序响应用户,从而克服了现有技术中无论网页页面内容数据是否已经预热,在响应请求时都需要通过应用程序去读取缓存模块(例如外部存储系统)的局限性,并且达到了防止应用服务器过载、保护应用程序的目的;通过采用Nginx内存作为存储网页页面内容的预热缓存数据的缓存模块,从而可以进一步地无需依赖外部存储系统,克服了现有技术中需要依赖外部存储系统的局限性;通过将利用Nginx的反向代理和内存存储数据的功能,使得响应网页页面内容时,无需连接应用程序,甚至无需连接外部存储系统,一次请求只需经过Nginx反向代理这一个步骤就能取到缓存内容,从而减少了网络开销,使得网页页面缓存内容离发起请求的用户“更近”,响应请求的速度更快;通过利用Lua(一种简单、高性能的脚本语言)语言编写脚本实现本发明技术方案中的解析模块、读取模块等,从而可以方便的使用Lua分阶段处理访问请求,实现利用Lua读写Nginx的内存(如:Nginx共享内存、LRU Cache等)的目的。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (12)
1.一种网页缓存预热的方法,其特征在于,包括:
位于代理服务器的解析模块解析所述代理服务器接收到的网页预热请求的URL地址,以获取所述网页预热请求的唯一标识,将所述网页预热请求的唯一标识作为缓存键,并将应用服务器响应的对应的网页页面内容作为缓存值,然后将所述缓存键和所述缓存值对应存储到缓存模块中;
位于代理服务器的解析模块解析所述代理服务器接收到的网页请求的URL地址,以获取所述网页请求的唯一标识,然后将所述网页请求的唯一标识作为键;
位于代理服务器的读取模块根据所述键从缓存模块中读取对应的缓存值,并返回。
2.根据权利要求1所述的方法,其特征在于,
位于代理服务器的解析模块解析所述代理服务器接收到的网页预热请求的URL地址,以获取所述网页预热请求的唯一标识包括:以所述网页预热请求的URL地址和/或所述网页预热请求的URL地址中具有唯一标识作用的字符串作为网页预热请求的唯一标识;以及
位于代理服务器的解析模块解析所述代理服务器接收到的网页请求的URL地址,以获取所述网页请求的唯一标识包括:以所述网页请求的URL地址和/或所述网页请求的URL地址中具有唯一标识作用的字符串作为网页请求的唯一标识。
3.根据权利要求1所述的方法,其特征在于,所述代理服务器为Nginx。
4.根据权利要求3所述的方法,其特征在于,所述缓存模块包括Nginx的内存和/或外部存储系统。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述位于代理服务器的解析模块和所述位于代理服务器的读取模块基于Lua脚本实现。
6.一种网页缓存预热的装置,其特征在于,包括:
解析模块,用于解析所述代理服务器接收到的网页预热请求的URL地址,以获取所述网页预热请求的唯一标识,将所述网页预热请求的唯一标识作为缓存键,并将应用服务器响应的对应的网页页面内容作为缓存值,然后将所述缓存键和所述缓存值对应存储到缓存模块中;以及还用于解析所述代理服务器接收到的网页请求的URL地址,以获取所述网页请求的唯一标识,然后将所述网页请求的唯一标识作为键;
读取模块,用于根据所述键从缓存模块中读取对应的缓存值,并返回;以及
缓存模块,用于以所述网页预热请求的唯一标识作为缓存键,并以应用服务器响应的对应的网页页面内容作为缓存值,存储所述网页预热请求的唯一标识以及对应的网页页面内容。
7.根据权利要求6所述的装置,其特征在于,所述解析模块还用于:
以所述网页预热请求的URL地址和/或所述网页预热请求的URL地址中具有唯一标识作用的字符串作为网页预热请求的唯一标识;以及
以所述网页请求的URL地址和/或所述网页请求的URL地址中具有唯一标识作用的字符串作为网页请求的唯一标识。
8.根据权利要求6所述的装置,其特征在于,所述代理服务器为Nginx。
9.根据权利要求8所述的装置,其特征在于,所述缓存模块包括Nginx的内存和/或外部存储系统。
10.根据权利要求6所述的装置,其特征在于,所述装置中,所述解析模块和所述读取模块基于Lua脚本实现。
11.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5中任一所述的方法。
12.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-5中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710235887.6A CN108694215A (zh) | 2017-04-12 | 2017-04-12 | 网页缓存预热的方法、装置、电子设备和计算机可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710235887.6A CN108694215A (zh) | 2017-04-12 | 2017-04-12 | 网页缓存预热的方法、装置、电子设备和计算机可读介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108694215A true CN108694215A (zh) | 2018-10-23 |
Family
ID=63843576
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710235887.6A Pending CN108694215A (zh) | 2017-04-12 | 2017-04-12 | 网页缓存预热的方法、装置、电子设备和计算机可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108694215A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110365633A (zh) * | 2019-05-23 | 2019-10-22 | 中国平安财产保险股份有限公司 | 通信流量控制方法、装置、计算机设备及存储介质 |
CN111083108A (zh) * | 2019-11-14 | 2020-04-28 | 北京字节跳动网络技术有限公司 | 一种数据处理的方法、装置、介质和电子设备 |
CN111597473A (zh) * | 2019-02-20 | 2020-08-28 | 阿里巴巴集团控股有限公司 | 数据传递方法、终端设备、服务器及数据传递系统 |
CN112148385A (zh) * | 2020-09-28 | 2020-12-29 | 睿住科技有限公司 | 数据加载方法、系统及计算机可读存储介质 |
CN112764948A (zh) * | 2021-01-22 | 2021-05-07 | 土巴兔集团股份有限公司 | 数据发送方法、数据发送装置、计算机设备及存储介质 |
CN113849752A (zh) * | 2021-09-24 | 2021-12-28 | 苏州浪潮智能科技有限公司 | 页面缓存方法、装置及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104615771A (zh) * | 2015-02-13 | 2015-05-13 | 广州华多网络科技有限公司 | 一种获取网页数据的方法及装置 |
CN105701233A (zh) * | 2016-02-18 | 2016-06-22 | 焦点科技股份有限公司 | 一种优化服务器缓存管理的方法 |
CN105930528A (zh) * | 2016-06-03 | 2016-09-07 | 腾讯科技(深圳)有限公司 | 一种网页缓存的方法及服务器 |
CN106131016A (zh) * | 2016-07-13 | 2016-11-16 | 北京知道创宇信息技术有限公司 | 恶意url检测干预方法、系统及装置 |
-
2017
- 2017-04-12 CN CN201710235887.6A patent/CN108694215A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104615771A (zh) * | 2015-02-13 | 2015-05-13 | 广州华多网络科技有限公司 | 一种获取网页数据的方法及装置 |
CN105701233A (zh) * | 2016-02-18 | 2016-06-22 | 焦点科技股份有限公司 | 一种优化服务器缓存管理的方法 |
CN105930528A (zh) * | 2016-06-03 | 2016-09-07 | 腾讯科技(深圳)有限公司 | 一种网页缓存的方法及服务器 |
CN106131016A (zh) * | 2016-07-13 | 2016-11-16 | 北京知道创宇信息技术有限公司 | 恶意url检测干预方法、系统及装置 |
Non-Patent Citations (2)
Title |
---|
我是小蚂蚁: "nginx+memcache 增加全站缓存系统", 《CSDN HTTPS://WWW.CNBLOGS.COM/SMALL-ANT/P/5231401.HTML》 * |
红黑联盟: "Nginx -- 反向代理及缓存功能", 《51CTO.COM HTTPS://WWW.2CTO.COM/NET/201702/596035.HTM》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111597473A (zh) * | 2019-02-20 | 2020-08-28 | 阿里巴巴集团控股有限公司 | 数据传递方法、终端设备、服务器及数据传递系统 |
CN111597473B (zh) * | 2019-02-20 | 2023-04-25 | 阿里巴巴集团控股有限公司 | 数据传递方法、终端设备、服务器及数据传递系统 |
CN110365633A (zh) * | 2019-05-23 | 2019-10-22 | 中国平安财产保险股份有限公司 | 通信流量控制方法、装置、计算机设备及存储介质 |
CN111083108A (zh) * | 2019-11-14 | 2020-04-28 | 北京字节跳动网络技术有限公司 | 一种数据处理的方法、装置、介质和电子设备 |
CN112148385A (zh) * | 2020-09-28 | 2020-12-29 | 睿住科技有限公司 | 数据加载方法、系统及计算机可读存储介质 |
CN112148385B (zh) * | 2020-09-28 | 2023-11-10 | 广东睿住智能科技有限公司 | 数据加载方法、系统及计算机可读存储介质 |
CN112764948A (zh) * | 2021-01-22 | 2021-05-07 | 土巴兔集团股份有限公司 | 数据发送方法、数据发送装置、计算机设备及存储介质 |
CN113849752A (zh) * | 2021-09-24 | 2021-12-28 | 苏州浪潮智能科技有限公司 | 页面缓存方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108694215A (zh) | 网页缓存预热的方法、装置、电子设备和计算机可读介质 | |
US10110695B1 (en) | Key resource prefetching using front-end optimization (FEO) configuration | |
CN102902805B (zh) | 一种页面访问方法和装置 | |
CN104572968B (zh) | 一种页面更新方法和装置 | |
CN104077310B (zh) | 加载资源文件的方法、设备和系统 | |
US20150012915A1 (en) | Client-side script bundle management system | |
CN108989362A (zh) | 一种静态资源的处理方法和装置 | |
CN106797337A (zh) | 用于消息编辑的系统和方法 | |
CN107679897A (zh) | 一种安全风险控制方法和装置 | |
CN103383687A (zh) | 一种页面处理方法和装置 | |
CN110020304A (zh) | 一种加载页面的方法和装置 | |
CN105338016B (zh) | 数据高速缓存方法和装置以及资源请求响应方法和装置 | |
CN107016074A (zh) | 一种网页加载方法及装置 | |
CN107862044A (zh) | 展示页面的方法和装置 | |
CN104462571A (zh) | 进行网页加载的方法、装置和浏览器客户端 | |
CN103257958A (zh) | 一种基于云存储的翻译方法及系统 | |
TW201409273A (zh) | 網頁訪問請求的響應方法和裝置 | |
CN102663081A (zh) | 在线应用平台内浏览网页的方法及在线浏览器、在线应用平台 | |
CN109936605A (zh) | 一种加载接口数据的方法和装置 | |
CN106503111A (zh) | 网页转码方法、装置及客户终端 | |
CN110020349A (zh) | 页面渲染的方法及装置 | |
CN110532455A (zh) | 一种基于Chrome浏览器的网页图片获取方法和系统 | |
US9398041B2 (en) | Identifying stored vulnerabilities in a web service | |
CN109558251A (zh) | 页面结构信息修改的方法及终端 | |
CN110110184A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181023 |