网站头部导航栏的加载方法及装置制造方法

文档序号:6504818阅读:233来源:国知局
网站头部导航栏的加载方法及装置制造方法
【专利摘要】本发明公开了一种网站头部导航栏的加载方法及装置。该加载方法包括加载DLL代理模块;DLL代理模块启动心跳侦听线程和守护线程;DLL代理模块读取本地Web服务器缓存中的第一数据,若读取成功,将该第一数据解析成HTML文件以返回给频道页面,若读取失败,DLL代理模块读取本地磁盘中保存的第二数据并解析成HTML文件以返回给频道页面;频道页面展示返回的HTML文件。本发明通过导航DLL代理模块和服务集群实现了网站头部导航栏框架的稳定运行和相关的内容运维工作。
【专利说明】网站头部导航栏的加载方法及装置
【技术领域】
[0001]本发明涉及一种网站头部导航栏的加载方法及装置,特别是涉及一种弹性可配置、实时更新的网站头部导航栏的加载方法及装置。
【背景技术】
[0002]对于一般电子商务网站,其网站头部导航栏框架的发布更新通常会采用相关内容系统发布HTML (超文本标记语言)页面,依赖于相关内容发布系统。
[0003]在发布系统在生成头部导航栏框架时,会频繁对网站服务器进行连接读写,消耗网站服务器性能和网络带宽。最重要是在大量用户同时访问时,发布系统会面临着文件(文件是指承载网站头部导航栏的磁盘物理文件)被用户使用,使文件更新失败的问题,从而可能导致网站风格不一致甚至异常,严重影响用户体验。

【发明内容】

[0004]本发明要解决的技术问题是为了克服现有技术中网站头部导航栏的更新会因为连续读写而消耗网站服务器性能和网络带宽、大量用户访问时会造成更新失败的缺陷,提供一种弹性可配置、实时更新的网站头部导航栏的加载方法及装置,使得网站头部导航栏更新不再进行代码改动、网站头部导航栏更新实现集群高可用性以及实现网站头部导航栏的内容的实时更新并且实现了所有频道的一致性。
[0005]本发明是通过下述技术方案来解决上述技术问题的:
[0006]一种网站头部导航栏的加载方法,其特点在于,该加载方法包括以下步骤:
[0007]S1Jeb (网络)服务器接收浏览器的Web请求以加载DLL (动态链接库)代理模块;
[0008]S2、判断该Web请求是否为Web服务器启动以来的首次Web请求访问,若是,进入步骤S3;若否,进入步骤S4;
[0009]S3、DLL代理模块启动心跳侦听线程和守护线程,并进入步骤S5 ;
[0010]S4、判断守护线程是否被异常挂起或者终止,若是,启动守护线程并进入步骤S5 ;若否,进入步骤S5;
[0011 ] S5, DLL代理模块读取本地Web服务器缓存中的第一数据,若读取成功,进入步骤S6 ;若读取失败,进入步骤S7 ;
[0012]S6, DLL代理模块将该第一数据解析成HTML文件以返回给频道页面,并进入步骤S8;
[0013]S7, DLL代理模块读取本地磁盘中保存的第二数据并解析成HTML文件以返回给频道页面,并进入步骤S8;
[0014]S8、频道页面展示返回的HTML文件,完成网站头部导航栏的加载,
[0015]其中,守护线程用于每隔一第一设定时间从一服务集群中获取网站头部导航栏的更新数据以更新本地Web服务器缓存中和本地磁盘中的第一数据和第二数据。
[0016]优选地,守护线程获取该更新数据的步骤包括:[0017]Sn、每隔该第一设定时间请求位于该服务集群中的Header Contents服务接口 ;
[0018]ST2、Header Contents服务接口读取集中式缓存中的更新数据,若读取成功,进入步骤St4 ;若读取失败,进入步骤St3 ;
[0019]S13> Header Contents服务接口读取该服务集群的数据库中的更新数据;
[0020]St4、将该更新数据返回至该DLL代理模块。
[0021]优选地,该集中式缓存中的更新数据的更新包括以下步骤:
[0022]Sp1、每隔一第二设定时间读取该数据库中的更新数据;
[0023]Sp2、判断该数据库中的更新数据是否发生变化,若是,进入步骤SP3;若否,返回步骤 Spi ;
[0024]Sp3、将该数据库中的更新数据同步分发至该集中式缓存中。
[0025]优选地,更新数据通过一网站头部导航栏发布系统的维护模块被录入至该数据库中,更新数据包括多个版本的数据,和/或,
[0026]该服务集群包括Memcached集群,该集中式缓存为位于Memcached集群中的缓存(Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap (基于哈希表的Map接口的实现)。其守护进程(daemon)是用C语言写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信)。
[0027]优选地,该第二数据为静态XML (可扩展标记语言)数据文件。
[0028]本发明还提供一种网站头部导航栏的加载装置,其特点在于,该加载装置包括Web服务器、DLL代理模块和服务集群,其中,
[0029]该Web服务器用于接收浏览器的Web请求以加载DLL代理模块;
[0030]该DLL代理模块用于在该Web请求为Web服务器启动以来的首次Web请求访问时启动心跳侦听线程和守护线程;在该Web请求不为Web服务器启动以来的首次Web请求访问时判断守护线程是否被异常挂起或者终止,若是,该DLL代理模块启动守护线程;若否,DLL代理模块读取本地Web服务器缓存中的第一数据,并在读取成功时将该第一数据解析成HTML文件以返回给频道页面;以及在读取失败时读取本地磁盘中保存的第二数据并解析成HTML文件以返回给频道页面,由该频道页面展示返回的HTML文件以完成网站头部导航栏的加载,
[0031]其中,守护线程用于每隔一第一设定时间从该服务集群中获取网站头部导航栏的更新数据以更新本地Web服务器缓存中和本地磁盘中的第一数据和第二数据。
[0032]优选地,该服务集群包括Header Contents服务接口,守护线程用于每隔该第一设定时间请求该Header Contents服务接口(Header Contents服务接口是网站头部导航栏内容的接口服务,用于提供网站头部导航栏所需的内容数据);
[0033]该Header Contents服务接口用于读取集中式缓存中的更新数据,并在读取成功时将更新数据返回至该DLL代理模块,在读取失败时读取该服务集群的数据库中的更新数据并返回至该DLL代理模块。
[0034]优选地,该服务集群包括一 Job (任务)作业系统,该Job作业系统用于每隔一第二设定时间读取该数据库中的更新数据;并在该数据库中的更新数据发生变化时将该数据库中的更新数据同步分发至该集中式缓存中。
[0035]优选地,该服务集群包括一网站头部导航栏发布系统,该网站头部导航栏发布系统包括一维护模块,该维护模块用于将更新数据录入至该数据库中,更新数据包括多个版本的数据,和/或,
[0036]该服务集群包括Memcached集群,该集中式缓存为位于Memcached集群中的缓存。
[0037]优选地,该第二数据为静态XML数据文件。
[0038]在符合本领域常识的基础上,上述各优选条件,可任意组合,即得本发明各较佳实例。
[0039]本发明的积极进步效果在于:通过导航DLL代理模块和服务集群实现了网站头部导航栏框架的稳定运行和相关的内容运维工作。本发明通过统一服务返回网站头部导航栏内容,实现内容与逻辑分离;并且通过守护进程服务实时、动态的更新网站头部导航栏内容;并且内部通过独立维护系统对网站头部导航栏内容进行统一管理,而且还可以实现数据的多版本管理,便于多版本数据之间的切换。
【专利附图】

【附图说明】
[0040]图1为本发明一实施例的网站头部导航栏的加载方法的流程图。
[0041]图2为本发明一实施例的网站头部导航栏的加载装置的结构框图。
【具体实施方式】
[0042]下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。
[0043]参考图1-2,该网站头部导航栏的加载方法包括以下步骤:
[0044]步骤100,Web服务器接收浏览器的Web请求以加载DLL代理模块;
[0045]步骤101,判断该Web请求是否为Web服务器启动以来的首次Web请求访问,若是,进入步骤102 ;若否,进入步骤103 ;
[0046]步骤102,DLL代理模块启动心跳侦听线程和守护线程,并进入步骤105 ;
[0047]步骤103,判断守护线程是否被异常挂起或者终止,若是,进入步骤104 ;若否,进入步骤105 ;
[0048]步骤104,启动守护线程;
[0049]步骤105,DLL代理模块读取本地Web服务器缓存中的第一数据,若读取成功,进入步骤106 ;若读取失败,进入步骤107 ;
[0050]步骤106,DLL代理模块将该第一数据解析成HTML文件以返回给频道页面,并进入步骤108 ;
[0051]步骤107,DLL代理模块读取本地磁盘中保存的第二数据并解析成HTML文件以返回给频道页面,并进入步骤108 ;
[0052]步骤108,频道页面展示返回的HTML文件,完成网站头部导航栏的加载,
[0053]其中,守护线程用于每隔一第一设定时间从一服务集群中获取网站头部导航栏的更新数据以更新本地Web服务器缓存中和本地磁盘中的第一数据和第二数据。
[0054]其中,守护线程获取该更新数据的步骤包括:[0055]Sn、每隔该第一设定时间请求位于该服务集群中的Header Contents服务接口 ;
[0056]ST2、Header Contents服务接口读取集中式缓存中的更新数据,若读取成功,进入步骤St4 ;若读取失败,进入步骤St3 ;
[0057]S13> Header Contents服务接口读取该服务集群的数据库中的更新数据;
[0058]St4、将该更新数据返回至该DLL代理模块。
[0059]优选地,该集中式缓存中的更新数据的更新包括以下步骤:
[0060]Sp1、每隔一第二设定时间读取该数据库中的更新数据;
[0061]Sp2、判断该数据库中的更新数据是否发生变化,若是,进入步骤SP3;若否,返回步骤 Spi ;
[0062]Sp3、将该数据库中的更新数据同步分发至该集中式缓存中。
[0063]优选地,更新数据通过一网站头部导航栏发布系统的维护模块被录入至该数据库中,更新数据包括多个版本的数据,并且
[0064]该服务集群包括Memcached集群,该集中式缓存为位于Memcached集群中的缓存。
[0065]其中,该第二数据为静态XML数据文件。
[0066]本发明所述的网站头部导航栏的加载装置,包括Web服务器1、DLL代理模块2和服务集群3,其中,
[0067]该Web服务器I用于接收浏览器的Web请求以加载DLL代理模块2 ;
[0068]该DLL代理模块2用于在该Web请求为Web服务器I启动以来的首次Web请求访问时启动心跳侦听线程和守护线程;在该Web请求不为Web服务器I启动以来的首次Web请求访问时判断守护线程是否被异常挂起或者终止,若是,该DLL代理模块2启动守护线程;若否,DLL代理模块2读取本地Web服务器缓存中的第一数据,并在读取成功时将该第一数据解析成HTML文件以返回给频道页面;以及在读取失败时读取本地磁盘中保存的第二数据并解析成HTML文件以返回给频道页面,由该频道页面展示返回的HTML文件以完成网站头部导航栏的加载,
[0069]其中,守护线程用于每隔一第一设定时间从该服务集群3中获取网站头部导航栏的更新数据以更新本地Web服务器缓存中和本地磁盘中的第一数据和第二数据。
[0070]其中,该服务集群3包括Header Contents服务接口,守护线程用于每隔该第一设定时间请求该Header Contents服务接口 ;
[0071]该Header Contents服务接口用于读取集中式缓存中的更新数据,并在读取成功时将更新数据返回至该DLL代理模块2,在读取失败时读取该服务集群3的数据库中的更新数据并返回至该DLL代理模块2。
[0072]具体来说,该服务集群3包括一 Job作业系统,该Job作业系统用于每隔一第二设定时间读取该数据库中的更新数据;并在该数据库中的更新数据发生变化时将该数据库中的更新数据同步分发至该集中式缓存中。
[0073]而且,该服务集群3包括一网站头部导航栏发布系统,该网站头部导航栏发布系统包括一维护模块,该维护模块用于将更新数据录入至该数据库中,更新数据包括多个版本的数据。
[0074]下面,为了使本领域技术人员更容易理解,以两个具体的场景来进一步描述本发明的技术方案。[0075]业务场景序列描述一:全站导航DLL Agent (即指DLL代理模块)处理过程
[0076]步骤(I):在用户访问网站一级频道时,浏览器发出Web请求到我们的Web服务器。Web服务器在接收到浏览器Web请求后,开始加载网站头部导航栏框架中的“全站导航DLLAgent,,。
[0077]步骤(2)全站导航DLL Agent”在被Web服务器加载的时候,首先会判断此次用户Web请求是否是自Web服务器启动以来的首页Web请求访问。如果是首次Web请求访问,则“全站导航DLL Agent”会开始在当前Web服务器环境下启动心跳侦听线程和“守护线程”,侦听间隔60秒。如果此次Web请求访问不是首次请求,则会开始检测“守护线程”当前时刻是否被异常挂起或终止,如果当前时刻“守护线程”因为各种情况被挂起或者终止了,则主动启动“守护线程”并保持有效运行。
[0078]步骤(3):“全站导航DLL Agent”开始读取本地Web服务器缓存(Cache)中的网站头部导航栏数据。本地Web服务器缓存(Cache)中的网站头部导航栏数据以XML格式进行存储。
[0079]步骤(4):如果“全站导航DLL Agent”在本地Web服务器缓存(Cache)中没有正确读取到所需要的网站头部导航栏内容数据,则“全站导航DLLAgent”开始读取取出本地磁盘中保存的头部导航栏静态XML文件,成功读取后,会对读取到的网站头部导航栏内容数据做XML解析并返回适当的HTML给各个频道页面,进入步骤(6)。
[0080]步骤(5):“守护线程”每隔60秒会主动请求位于“全站导航服务集群(即上文的服务集群)内”的Header Contents服务接口,来获取网站头部导航栏内容数据。然后负责主动更新到本地Web服务器缓存和本地磁盘中的静态XML数据文件,保证了网站头部导航栏内容数据的及时更新以及容错数据的及时生效。
[0081]步骤(6):最后“全站导航DLL Agent”将合适的头部导航栏内容数据以HTML格式返回各个频道页面,各频道页面直接展示返回的头部导航栏HTML,整个网站头部导航栏加载过程完成。
[0082]业务场景序列描述二:Header Contents服务接口和网站头部导航栏内容发布系统处理过程
[0083]步骤(I):守护线程每隔60秒,主动请求位于“全站导航服务集群内”的HeaderContents 服务接 口。
[0084]步骤(2):Header Contents服务在接收到来自于守护线程的Web请求后,首先读取位于集中式缓存中的网站头部导航栏内容,如果缓存中需要的内容数据不存在,则进入步骤(3)这个容错通道。
[0085]步骤(3):Header Contents服务直接读取位于数据库Database中的网站头部导航栏内容数据,并返回给服务调用方。
[0086]步骤(4),(5):后端定时运行着一个Job作业系统,此Job作业系统每隔30秒负责读取数据库Database中的网站头部导航栏内容数据,如果读取到有更新的网站头部导航栏内容数据,就同步分发到集中式缓存中;如果读取到的头部导航栏内容数据没有发生变化,则不进行同步分发操作,以节约服务器资源消耗,从而保证集中式缓存中的内容一致性以及及时性。其中,后端是指位于网站物理网络后端的网络区域;因为不是每次都同步内容数据,而是再有内容变化的时候再同步,因此可以节约服务器的资源消耗。[0087]步骤(6):后端的网站头部导航栏发布系统通过维护模块将所需要的导航栏内容信息录入到数据库Database中,提供给Header Contents服务以及同步Job作业系统使用。同时后端的网站头部导航栏发布系统可以将导航栏内容进行多版本管理,提供版本切换功能,从而使得Header Contents服务和同步Job作业系统获取到正确的导航栏内容数据。其中,版本的不同是内容数据的不同,比如内容数据之一叫做‘首页’是一个版本,另一个版本可能会叫做‘网站首页’,这是两个不同的版本;版本之间的切换是通过‘头部导航栏内容发布系统’来实现的,具体实现方式是直接将相关版本内容数据录入并保存到数据库系统中实现的。
[0088]步骤(7) =Header Contents服务将“守护线程”所请求的网站头部导航栏内容数据以XML数据格式返回。
[0089]由此可以看出,本发明具有以下优越性:
[0090](一)网站高可用性
[0091]7*24小时稳定运行,解决了因头部导航栏框架更新导致的网站不可用问题。
[0092](二)动态更新网站头部导航栏
[0093]通过内容集中管理实现了可以动态更新头部导航栏。
[0094](三)实时更新网站头部导航栏
[0095]通过服务获取导航内容,实现实时更新头部导航栏,用户能即时看到更新内容。
[0096](四)全站头部导航栏内容一致性
[0097]通过统一的头部导航栏框架,确保了整个网站的头部导航栏一致性。
[0098](五)SEO(搜索引擎优化)友好性
[0099]采用非JavaScript模式(JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。它最初由网景公司(Netscape)的Brendan Eich设计,是一种动态、弱类型、基于原型的语言,内置支持类。JavaScript是Sun公司的注册商标。Ecma国际以JavaScript为基础制定了 ECMAScript标准。JavaScript也可以用于其他场合,如服务器端编程。完整的JavaScript实现包含三个部分=ECMAScript(一种脚本程序设计语言),文档对象模型,字节顺序记号)展现头部导航栏内容,实现了搜索引擎友好性。
[0100]网站头部导航栏框架可配置的即时更新架构发布后,由网站各个一级频道(即网站头部最顶层的第一级导航栏目)接入DLL Agent,实现首次运行。
[0101]后续有网站头部导航栏内容更新需求时,可以依托全站导航服务集群内容维护模块实现快速更新发布,对网站线上业务的快速发展提供了有力的支持。
[0102]虽然以上描述了本发明的【具体实施方式】,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。
【权利要求】
1.一种网站头部导航栏的加载方法,其特征在于,该加载方法包括以下步骤: Sp Web服务器接收浏览器的Web请求以加载DLL代理模块; 52、判断该Web请求是否为Web服务器启动以来的首次Web请求访问,若是,进入步骤S3 ;若否,进入步骤S4 ; 53、DLL代理模块启动心跳侦听线程和守护线程,并进入步骤S5; 54、判断守护线程是否被异常挂起或者终止,若是,启动守护线程并进入步骤S5;若否,进入步骤S5 ; 55、DLL代理模块读取本地Web服务器缓存中的第一数据,若读取成功,进入步骤S6;若读取失败,进入步骤S7; 56、DLL代理模块将该第一数据解析成HTML文件以返回给频道页面,并进入步骤S8 ; 57、DLL代理模块读取本地磁盘中保存的第二数据并解析成HTML文件以返回给频道页面,并进入步骤S8; 58、频道页面展示返回的HTML文件,完成网站头部导航栏的加载, 其中,守护线程用于每隔一第一设定时间从一服务集群中获取网站头部导航栏的更新数据以更新本地Web服务器缓存中和本地磁盘中的第一数据和第二数据。
2.如权利要求1所述的加载方法,其特征在于,守护线程获取该更新数据的步骤包括: Sn、每隔该第一设定时间·请求位于该服务集群中的Header Contents服务接口 ; S12> Header Contents服务接口读取集中式缓存中的更新数据,若读取成功,进入步骤St4 ;若读取失败,进入步骤St3 ; ST3> Header Contents服务接口读取该服务集群的数据库中的更新数据; St4、将该更新数据返回至该DLL代理模块。
3.如权利要求2所述的加载方法,其特征在于,该集中式缓存中的更新数据的更新包括以下步骤: Sp1、每隔一第二设定时间读取该数据库中的更新数据; Sp2、判断该数据库中的更新数据是否发生变化,若是,进入步骤Sp3;若否,返回步骤Sp1; Sp3、将该数据库中的更新数据同步分发至该集中式缓存中。
4.如权利要求2所述的加载方法,其特征在于,更新数据通过一网站头部导航栏发布系统的维护模块被录入至该数据库中,更新数据包括多个版本的数据,和/或, 该服务集群包括Memcached集群,该集中式缓存为位于Memcached集群中的缓存。
5.如权利要求1-4中任意一项所述的加载方法,其特征在于,该第二数据为静态XML数据文件。
6.一种网站头部导航栏的加载装置,其特征在于,该加载装置包括Web服务器、DLL代理模块和服务集群,其中, 该Web服务器用于接收浏览器的Web请求以加载DLL代理模块; 该DLL代理模块用于在该Web请求为Web服务器启动以来的首次Web请求访问时启动心跳侦听线程和守护线程;在该Web请求不为Web服务器启动以来的首次Web请求访问时判断守护线程是否被异常挂起或者终止,若是,该DLL代理模块启动守护线程;若否,DLL代理模块读取本地Web服务器缓存中的第一数据,并在读取成功时将该第一数据解析成HTML文件以返回给频道页面;以及在读取失败时读取本地磁盘中保存的第二数据并解析成HTML文件以返回给频道页面,由该频道页面展示返回的HTML文件以完成网站头部导航栏的加载, 其中,守护线程用于每隔一第一设定时间从该服务集群中获取网站头部导航栏的更新数据以更新本地Web服务器缓存中和本地磁盘中的第一数据和第二数据。
7.如权利要求6所述的加载装置,其特征在于,该服务集群包括HeaderContents服务接口,守护线程用于每隔该第一设定时间请求该Header Contents服务接口 ; 该Header Contents服务接口用于读取集中式缓存中的更新数据,并在读取成功时将更新数据返回至该DLL代理模块,在读取失败时读取该服务集群的数据库中的更新数据并返回至该DLL代理模块。
8.如权利要求7所述的加载装置,其特征在于,该服务集群包括一Job作业系统,该Job作业系统用于每隔一第二设定时间读取该数据库中的更新数据;并在该数据库中的更新数据发生变化时将该数据库中的更新数据同步分发至该集中式缓存中。
9.如权利要求7所述的加载装置,其特征在于,该服务集群包括一网站头部导航栏发布系统,该网站头部导航栏发布系统包括一维护模块,该维护模块用于将更新数据录入至该数据库中,更新数据包括多个版本的数据,和/或, 该服务集群包括Memcached集群,该集中式缓存为位于Memcached集群中的缓存。
10.如权利要求6-9中任意一项所述的加载装置,其特征在于,该第二数据为静态XML数据文件 。
【文档编号】G06F17/30GK103853577SQ201310261260
【公开日】2014年6月11日 申请日期:2013年6月26日 优先权日:2013年6月26日
【发明者】叶亚明, 李小林, 苏红超 申请人:携程计算机技术(上海)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1