本发明涉及网站缓存技术领域,尤其涉及一种分布式网站缓存静态化方法、一种服务器和包括该服务器的分布式网站缓存静态化系统。
背景技术:
对于很多网站来说,其主要功能是用于展示信息,而传统很多网站都是动态的去加载数据,动态的去获取页面,但是这些内容大部分时间是不会去变化的,而这样的请求往往会造成资源的浪费,尤其是在访问量增大的情况下会造成数据库的崩溃或者是整个网站的崩溃。为了避免这些资源浪费,所以就需要将网站静态化,将数据进行缓存。
同时在分布式网站中,传统的解决方式是在服务端将数据进行缓存,这样需要人力去开发自己所需要的缓存功能,而且会出现数据不同步的情况。对于那些没有采用前后端分离的网站,静态页面一般是在动态的服务器中,甚至是跟接口服务在一个容器中,每一个http请求都需要消耗资源,容器的请求是有上限的,一旦有接口发生堵塞,整个网站的请求将会堵塞,造成网站无法访问的状态,这样情况对于网站来说是一场巨大的灾难。
现在的网站有很多语言编写成,如python,php,java,c#等等,对于每一种语言,实现缓存化和静态化都需要不同的技术去解决。在高并发的情况下,往往采取的是增加服务器,对服务器进行集群,服务端占用的资源是巨大的,需要有好的硬件来支撑,所以会增加一部分开支。面对这些问题,需要一个便捷,快速,轻量化,兼容性好的方法去解决这些问题。
技术实现要素:
本发明提供了一种分布式网站缓存静态化方法、一种服务器和包括该服务器的分布式网站缓存静态化系统,解决相关技术中存在的缺乏轻量化兼容性好的方法解决服务端占用资源大的问题。
作为本发明的第一个方面,提供一种分布式网站缓存静态化方法,其中,包括:
接收客户端发送的服务请求;
判断所述服务请求的类型;
若所述服务请求的类型为页面请求,则根据页面请求处理方式向所述客户端返回请求处理结果;
若所述服务请求的类型为接口服务,则根据接口服务处理方式向所述客户端返回请求处理结果。
进一步地,所述若所述服务请求的类型为页面请求,则根据页面请求处理方式向所述客户端返回请求处理结果,包括:
若所述服务请求的类型为页面请求,则判断是否已经生成静态html;
若已经生成静态html,则向所述客户端返回所述静态html;
若没有生成静态html,则生成html页面并返回至所述客户端。
进一步地,所述生成html页面并返回至所述客户端,包括:
通过拦截向所述客户端发送的数据生成html页面;
对所述html页面进行压缩,将压缩后的html页面返回至所述客户端。
进一步地,所述若所述服务请求的类型为接口服务,则根据接口服务处理方式向所述客户端返回请求处理结果,包括:
若所述服务请求的类型为接口服务,则判断redis中是否有缓存;
若有缓存,则向所述客户端返回缓存数据;
若不存在缓存,则拦截向所述客户端返回的数据;
将拦截的数据保存至redis中,并返回至所述客户端。
进一步地,所述若所述服务请求的类型为接口服务,则根据接口服务处理方式向所述客户端返回请求处理结果还包括在所述将拦截的数据保存至redis中,并返回至所述客户端前进行的:
将拦截的数据进行压缩。
作为本发明的另一个方面,提供一种服务器,其中,包括:
接收模块,用于接收客户端发送的服务请求;
判断模块,用于判断所述服务请求的类型;
第一处理模块,用于若所述服务请求的类型为页面请求,则根据页面请求处理方式向所述客户端返回请求处理结果;
第二处理模块,用于若所述服务请求的类型为接口服务,则根据接口服务处理方式向所述客户端返回请求处理结果。
进一步地,所述第一处理模块包括:
第一判断单元,用于若所述服务请求的类型为页面请求,则判断是否已经生成静态html;
第一返回单元,用于若已经生成静态html,则向所述客户端返回所述静态html;
第二返回单元,用于若没有生成静态html,则生成html页面并返回至所述客户端。
进一步地,所述第二处理模块包括:
第二判断单元,用于若所述服务请求的类型为接口服务,则判断redis中是否有缓存;
第三返回单元,用于若有缓存,则向所述客户端返回缓存数据;
拦截单元,用于若不存在缓存,则拦截向所述客户端返回的数据;
第四返回单元,用于将拦截的数据保存至redis中,并返回至所述客户端。
作为本发明的另一个方面,提供一种分布式网站缓存静态化系统,其中,包括客户端和前文所述的服务器,所述客户端与所述服务器通信连接;
所述客户端用于向所述服务器发送服务请求,并接收所述服务器返回的请求处理结果;
所述服务器用于接收所述服务请求,并对所述服务请求进行处理得到请求处理结果。
本发明提供的分布式网站缓存静态化方法,通过对客户端的服务请求进行判断,然后根据不同类型的服务请求分别作出相应的处理,并向客户端返回处理结果。这种分布式网站缓存静态化方法能够轻量化,低成本,兼容性去做网站缓存和网站静态化,减少资源浪费,提高网站响应速度,降低运维成本。
附图说明
附图是用来提供对本发明的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明,但并不构成对本发明的限制。在附图中:
图1为本发明提供的分布式网站缓存静态化方法的流程图。
图2为本发明提供的分布式网站缓存静态化方法的具体实施过程流程图。
图3为本发明提供的静态html与缓存的更新页面示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互结合。下面将参考附图并结合实施例来详细说明本发明。
为了使本领域技术人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包括,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本实施例中提供了一种分布式网站缓存静态化方法,图1是根据本发明实施例提供的分布式网站缓存静态化方法的流程图,如图1所示,包括:
s110、接收客户端发送的服务请求;
s120、判断所述服务请求的类型;
s130、若所述服务请求的类型为页面请求,则根据页面请求处理方式向所述客户端返回请求处理结果;
s140、若所述服务请求的类型为接口服务,则根据接口服务处理方式向所述客户端返回请求处理结果。
本发明实施例提供的分布式网站缓存静态化方法,通过对客户端的服务请求进行判断,然后根据不同类型的服务请求分别作出相应的处理,并向客户端返回处理结果。这种分布式网站缓存静态化方法能够轻量化,低成本,兼容性去做网站缓存和网站静态化,减少资源浪费,提高网站响应速度,降低运维成本。
下面结合图1至图3对本发明实施例提供的分布式网站缓存静态化方法的具体实现过程进行详细描述。
可以理解的是,在客户端,用户可以进入配置中心,选择配置整个域名下的网站,包括页面和服务接口,或者选择单独配置需要静态化的页面地址和接口服务,选择页面更新的频率,或者是选择版本号功能。如果选择更新频率,则页面和接口会根据更新频率定期去更新最新的页面和缓存(如图3所示)。如果选择版本好,则可以手动输入最新的版本通知,服务器会根据最新的版本号判断是否需要更新页面和缓存。
具体地,所述若所述服务请求的类型为页面请求,则根据页面请求处理方式向所述客户端返回请求处理结果,包括:
若所述服务请求的类型为页面请求,则判断是否已经生成静态html(hypertextmarkuplanguage,超文本标记语言);
若已经生成静态html,则向所述客户端返回所述静态html;
若没有生成静态html,则生成html页面并返回至所述客户端。
进一步具体地,所述生成html页面并返回至所述客户端,包括:
通过拦截向所述客户端发送的数据生成html页面;
对所述html页面进行压缩,将压缩后的html页面返回至所述客户端。
可以理解的是,客户端对缓存服务器经行请求,服务器接收到服务请求,判断当前请求的请求类型,如果为页面请求,则去判断服务器中是否已生成静态html,如果有则返回静态html给客户端,如果没有则请求服务器,通过拦截服务器返回数据,生成html页面,同时对页面进行压缩,减少带宽,返回给客户端,客户端下次请求则会请求到静态的html,不需要对服务器经行请求。
具体地,所述若所述服务请求的类型为接口服务,则根据接口服务处理方式向所述客户端返回请求处理结果,包括:
若所述服务请求的类型为接口服务,则判断redis(remotedictionaryserve,远程字典服务)中是否有缓存;
若有缓存,则向所述客户端返回缓存数据;
若不存在缓存,则拦截向所述客户端返回的数据;
将拦截的数据保存至redis中,并返回至所述客户端。
进一步具体地,所述若所述服务请求的类型为接口服务,则根据接口服务处理方式向所述客户端返回请求处理结果还包括在所述将拦截的数据保存至redis中,并返回至所述客户端前进行的:
将拦截的数据进行压缩。
可以理解的是,如果客户端请求为接口服务,则判断redis中是否有缓存,如果有缓存则返回缓存数据,如果不存在请求服务器,拦截服务器返回的数据,对数据进行压缩,保存至redis中,然后返回给客户端,客户端下次访问,则获取的是分布式缓存服务器中的缓存。
在服务器停止的情况下,客户端依然可以访问到缓存的数据和页面。这样可以优雅的对自己的服务器经行维护和升级。
当缓存服务器并发不够的化,只需要增加缓存服务器节点,同时因为轻量化,每增加一个节点,增加的并发量是巨大的,同时增加服务节点的支出是很少的。
作为本发明的另一实施例,提供一种服务器,其中,包括:
接收模块,用于接收客户端发送的服务请求;
判断模块,用于判断所述服务请求的类型;
第一处理模块,用于若所述服务请求的类型为页面请求,则根据页面请求处理方式向所述客户端返回请求处理结果;
第二处理模块,用于若所述服务请求的类型为接口服务,则根据接口服务处理方式向所述客户端返回请求处理结果。
本发明实施例提供的服务器,通过对客户端的服务请求进行判断,然后根据不同类型的服务请求分别作出相应的处理,并向客户端返回处理结果。该服务器能够轻量化,低成本,兼容性去做网站缓存和网站静态化,减少资源浪费,提高网站响应速度,降低运维成本。
具体地,所述第一处理模块包括:
第一判断单元,用于若所述服务请求的类型为页面请求,则判断是否已经生成静态html;
第一返回单元,用于若已经生成静态html,则向所述客户端返回所述静态html;
第二返回单元,用于若没有生成静态html,则生成html页面并返回至所述客户端。
具体地,所述第二处理模块包括:
第二判断单元,用于若所述服务请求的类型为接口服务,则判断redis中是否有缓存;
第三返回单元,用于若有缓存,则向所述客户端返回缓存数据;
拦截单元,用于若不存在缓存,则拦截向所述客户端返回的数据;
第四返回单元,用于将拦截的数据保存至redis中,并返回至所述客户端。
需要说明的是,关于所述服务器的具体工作原理可以参照前文的分布式网站缓存静态化方法的描述,此处不再赘述。
作为本发明的另一实施例,提供一种分布式网站缓存静态化系统,其中,包括客户端和前文所述的服务器,所述客户端与所述服务器通信连接;
所述客户端用于向所述服务器发送服务请求,并接收所述服务器返回的请求处理结果;
所述服务器用于接收所述服务请求,并对所述服务请求进行处理得到请求处理结果。
本发明实施例提供的分布式网站缓存静态化系统,服务器通过对客户端的服务请求进行判断,然后根据不同类型的服务请求分别作出相应的处理,并向客户端返回处理结果。这种分布式网站缓存静态化系统能够轻量化,低成本,兼容性去做网站缓存和网站静态化,减少资源浪费,提高网站响应速度,降低运维成本。
需要说明的是,关于所述分布式网站缓存静态化系统的具体工作原理可以参照前文的分布式网站缓存静态化方法的描述,此处不再赘述。
可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。