一种基于服务器和客户端缓存的资源文件查询方法及系统的制作方法_3

文档序号:8433854阅读:来源:国知局
资源列表数据,再向低级机构服务器的上一级机构服务器发送。如在一教学系统体系中存在省、市、县、校各级机构服务器,在机构服务器的缓存中查找资源列表数据时,首先在校级机构服务器中查找,如果存在则返回到客户端,查找接收;如果校级机构服务器中不存在或者存在但时间戳已经过期,则再向校级机构服务器的上一级机构服务器即县级机构服务器缓存中查找,如果不存在再依次向市、省级机构服务器的缓存中查询。
[0057]本【具体实施方式】中,将资源列表数据推送到机构服务器上,可以大大提高用户下载资源列表的速度,具体的将资源列表数据推送到机构服务器上以及从机构服务器获取资源列表数据的方式,可参见申请号为201110378219.1、名称为“一种基于星型分布式系统的文件同步方法”及申请号为201110432249.6、名称为“一种瀑布式的数据下发的方法及系统”的专利中记载的推送资源实体的框架,将资源列表数据也推送到机构服务器上。但是本【具体实施方式】中将资源列表数据推动到机构服务器上与将资源实体推送到机构服务器不同的是:
[0058]I)在将资源实体文件推送到机构服务器时,每个资源文件都需要在位于中心服务器上进行登记,客户端要获取(通常指下载)资源文件时,先需要向中心服务器发起查询请求,得到资源具体位于哪个机构服务器上,及其在机构服务器上的Url地址,下一步再根据地址进行下载操作。本实施方式中在推送资源列表数据时,资源列表数据不再在中心服务器进行登记,由此去掉了向中心服务器查询资源列表数据所在的机构服务器的Url的操作,而是采用“试错”的方式,即机构服务器固定向自己的上级机构服务器中的固定规则构成的目录(由书籍ID、章节ID构成)中查询,未找到合法的缓存数据则再向上一级机构服务器查询,直至中心服务器。
[0059]2)在推动资源实体文件时,还需要记录资源在中心服务器的一些描述信息,记录在资源列表数据文件的文件名中,例如一资源列表文件的文件名为2013-08-2510-23-19.xml,该文件名即表示该资源的时间戳为2013-08-2510-23-19。
[0060]本【具体实施方式】中通过对推送方式中上述两点内容的修改,可有效减少网络开销。
[0061]步骤S23:在中心服务器的缓存中查找资源列表数据;
[0062]当在机构服务器的缓存中无法获取到用户需要的资源列表数据时,客户端向中心服务器发送资源获取请求,在中心服务器对应的缓存中查找是否存在所述的待查询资源列表数据且数据的时间戳未过期,若是则读取缓存中对应的资源列表数据发送到客户端,进入步骤S25,若否则进入步骤S24 ;
[0063]本【具体实施方式】中的中心服务器采用Nginx反向代理服务器,Nginx反向代理服务器中将资源列表数据缓存在与之相连的memcache中。
[0064]Nginx ("'engine x〃)是一个高性能的HTTP和反向代理服务器,Nginx缓存,使用的比较多的是采用pr0Xy_CaChe模块进行网页缓存的方式,但本【具体实施方式】中需要缓存的不是网页,而是资源列表数据,本【具体实施方式】中通过Nginx反向代理服务器进行网页资源列表数据缓存时,利用“Nginx+memc-nginx/srcache-nginx”模块存取数据的技术。
[0065]步骤S24:在后端web服务器的缓存中查找资源列表数据;
[0066]中心服务器将所述的资源列表数据获取请求发送到后端web服务器,后端web服务器在数据库中查询对应的资源列表数据并发送到中心服务器,中心服务器将接收到的资源列表数据发送到客户端。
[0067]后端web服务器将资源列表数据发送到中心服务器后,Nginx反向代理服务器将接收到的资源列表数据缓存到与之相连的memcache中。此外,当中心服务器中存在新的资源更新时(例如人工加入新资源等),中心服务器将更新的资源及资源列表数据下发到机构服务器中进行缓存。
[0068]本【具体实施方式】中从减轻系统复杂性和缓存的必要程度出发,Nginx反向代理服务器相连的memcache不进行主动缓存,而在用户的请求到达上述第11步时,将获得的数据进行缓存。
[0069]步骤S25 :客户端接收资源列表数据并在客户端界面展现。
[0070]客户端接收到资源列表数据后,将资源列表数据保存到客户端本地缓存中,并更新资源列表数据的时间戳,当然,如果客户端展现的资源类表数据是客户端本地缓存中的资源列表数据,则不需要再进行数据的更新。。
[0071]本发明所述的方法中,利用客户端缓存技术、机构服务器资源同步框架技术(机构服务器缓存技术)、Nginx反向代理服务器缓存技术和后端Web服务器数据缓存技术实现了对资源及资源列表数据的分布式缓存。在缓存的实现方式上,本发明采用了类似浏览器彻底缓存的方式,即设置在客户端、机构服务器、中心服务器中缓存的资源列表数据的时间戳,通过该时间戳判断缓存的数据是否过期,如果没有过期则可以直接获取缓存的数据发送到客户端占闲,最大程度地节省带宽和服务器的开销。
[0072]为了更好的说明本发明,下面结合具体实施例进行进一步详细说明。
[0073]实施例I
[0074]用户在客户端系统中打开一本名为《语文3年级下册》的电子书籍,如图I所示,当用户进行翻书浏览时,右边的资源列表将动态列出当前章节对应的资源。当用户翻到第三单元《民俗风情》时:
[0075](I)客户端将以该章节的 ID (8a82304c3fdlf01b014143389d4a0d8f)为主键在本地Sqlite数据库的chapter_resList表中进行查询,查看是否有对应的记录,该记录中包含该资源最后被写入缓存的(服务器)时间戳。
[0076](2)在chapter_resList表中查到了相应的记录,其时间戳字段字段的值为2013-08-2010:23:19 ;系统设置的过期时间为24小时;客户端的本地前时间为2013-08-2512:10:12,显然该条记录的缓存时间已经过期,系统判定该记录的缓存已失效,进行下一步;
[0077](3)从简化系统的角度,机构服务器上不采用数据库方式实现缓存,而用xml格式的文本磁盘文件保存,同时对外提供Ftp服务进行缓存文件的读取,如图7所示。查询时,以章节ID8a82304c3fdlf01b014143389d4a0d8f为子目录名,在校级机构服务器的Ftp目录中查找资源列表文件,查询到文件2013-08-2510-23-19. xml。此处xml文件的名称就是文件的写入时间,而不是将改时间写在xml文件的内部,这样可在枚举文件时就得到时间戳信息,无需实际打开该文件;
[0078](4)在校级服务器的缓存文件中,查询到了该文件,且由其文件名2013-08-2510-23-19. xml可知,该文件并未过期,则客户端通过机构服务器提供的Ftp服务下载该文件。
[0079](13)客户端接收到资源列表数据,将此xml文件读入内存,进行解析获得对应的资源列表数据,在界面中将之展现出来。
[0080](14)客户端将该数据保存在本地缓存(Sqlite数据库)中,同时更新该书籍的时间戳;
[0081]实施例2
[0082]用户在客户端系统中打开一本名为《语文3年级下册》的电子书籍,如图2所示,当用户进行翻书浏览时,右边的资源列表将动态列出当前章节对应的资源。当用户翻到第三单元《民俗风情》时:
[0083](I)客户端将以该章节的 ID (8a82304c3fdlf01b014143389d4a0d8f)为主键在本地
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1