静态网页自动更新方法
技术领域
本发明涉及一种网页发布技术,具体的说是一种对静态网页自动更新的方法。
背景技术
目前市场上由各种静态网页发布产品,发布出的网站中,文章列表都是其中的一个重要部分。发布某个栏目的一篇文章时,整个站点所有用到这个栏目的文章列表都应该随之变化。为了避免发布一篇文章导致整个站点的很多页面也要重复发布,一般的同类产品都使用了SSI(Server Side Include)技术。即通过使用类似<!--#includefile=″list.htm″-->的标签将包含列表信息的list.htm页面包含到引用页面中。当需要更新某个列表时,只需更新被包含的list.htm页面即可。
问题是如何在发布一篇文章后能够迅速准确地定位到需要更新的列表,一般的同类产品只能支持所在栏目树的列表更新,当遇到稍复杂的条件列表时就无能为力了,并且还有更新速度慢,作用范围不准确,重复更新等缺点。
发明内容
本发明的目的在于提供一种静态网页自动更新方法,能对于静态网页快速,准确的自动更新。
一种静态网页自动更新方法,包括以下步骤:
a在启动WEB服务时首先创建一个全局变量和一个静态列表自动更新线程,所述全局变量是一个包含需要更新的静态列表记录;所有含有文章列表的页面发布时,将文章静态列表的各种属性信息存放在数据中。检查文章列表组件的配置,如果此文章列表组件的所属栏目没有任何配置,此时默认此静态列表没有栏目限制。对于这样的列表,在保存静态列表数据时将表的update Type字段设置为“1”,将listCol设置为“A”;当列表没有对模板配置时,将listTemp设置为“A”;包含栏目和列表的所有列表配置,将其转换成类似于URL传参的字符串存放在listValue中;
b用户删除、修改或者新建一个网页保存并发布时,判断网页使用模板的类型,如果模板是文章模板时就进行下一步;
c分析此网页内容,创建静态列表集合M,获得网页的所属栏目和此栏目到一级栏目的各级栏目C集合,并在C集合中加入数据表示无栏目设置,查找所有listCol被C集合包含、updateType为“0”,并且listTemp的值为“A”的静态列表记录,并将其加入到集合M中,
再查找有模板限制的静态列表记录,将listCol被C集合包含、updateType为“0”作为前提条件,listTemp的值为网页P的使用模板,查出所有的符合条件的静态列表集合W;
解析网页页面的所有组件值形成第一键值对,迭代静态列表集合W,将每个静态列表记录中的解析成第二键值对,对第二键值对中的每个键值对逐个于第一键值对中相同键名的值进行分析,判断此静态列表记录是否满足更新要求,具体的判断是:
先将第二键值对中的栏目设置和模板设置剔除掉,迭代每个第二键值对中的键值对<K,V>,
当K为数字范围的临界值时,判断对应的第一键值对中K的值是否在范围V内,
当K为日期范围的临界值时,判断对应的第一键值对中K的值是否在范围V内,
当K为文本字段包含值时,判断对应的第一键值对中的K值是否含有V,
当符合上述三个条件时,则判断此静态列表记录符合更新条件,将不符合条件的静态列表记录从W中剔除,将W中的所有加到集合M中,在锁定全局变量的状态下将集合M中的每条记录和目前的时间组成一个键值对加入全局变量中,如果遇到相同的键名K,则覆盖之前的记录;
d静态网页更新线程,静态列表记录的文章列表的更新方式包括:当某条静态列表记录R的updateType值为“0”时,在更新后就会将R从A中删除。当updateType为“1”时,更新后则不会将其删除。所有需要更新的静态列表记录在加入全局变量时都和当前时间组成键值对<K,V>,在线程更新列表记录之前,根据V值判断间隔是否超过一定时间,文章列表的更新方式为不删除时,更新后将此键值对<K,V>的V值修改为当前时间。
所述文章静态列表的属性信息包括文章列表组件所在的模板、文章列表组件名、文章列表的配置信息、文章列表配置的栏目信息、文章列表配置的模板信息、文章列表页面的路径和文章列表的更新方式。
所述全局变量还包括当前时间的一个键值对,用户删除、修改或者新建一个网页保存并发布时,先将需要更新的内容记录,当到达设定时间时统一进行更新步骤。
本发明具有以下有益效果:本发明静态网页自动更新方法通过全局变量和静态列表记录,可以准确的找到静态网页中需要更新的页面和内容,作用范围准确,减少***资源消耗,更新速度快,,支持复杂条件列表更新;同时通过时间设置,对更新请求先记录下来,到设定时间时进行统一更新,避免了同一静态列表记录短时间内重复更新。
附图说明
下面结合附图和具体实施方式对本发明作进一步说明。
图1为全局变量和静态列表自动更新线程示意图;
图2为本发明静态网页自动更新方法静态列表更新线程示意图;
具体实施方式
如图1,在WEB(网络)服务启动时,首先会创建一个全局变量A和一个静态列表自动更新线程。全局变量A是一个包含需要更新的静态列表记录和当前时间的一个键值对集合。然后线程会在指定的间隔时间内去对静态列表进行更新,并将不需要定期更新的数据从A中删除掉。本发明静态列表的数据库表如下表1:
表1
字段名称 |
类型 |
说明 |
webTemplateId(主键) |
Var(20) |
文章列表组件所在的模板 |
compName(主键) |
Var(60) |
文章列表的组件名 |
listValue(主键) |
Var(255) |
文章列表的配置信息 |
listCol |
Var(20) |
文章列表配置的栏目信息 |
listTemp |
Var(20) |
文章列表配置的模板信息 |
path |
Var(255) |
文章列表页面的路径 |
updateType |
Var(20) |
文章列表的更新方式 |
本发明静态网页自动更新方法包括以下步骤:
步骤a,所有含有文章列表的页面发布时,将文章静态列表的各种属性信息存放在数据中。检查文章列表组件的配置,如果此文章列表组件的所属栏目没有任何配置,此时默认此静态列表没有栏目限制。对于这样的列表,在保存静态列表数据时将表的updateType字段设置为“1”,将listCol设置为“A”;当列表没有对模板配置时,将listTemp设置为“A”;包含栏目和列表的所有列表配置,将其转换成类似于URL(统一资源定位符)传参(传递参数)的字符串存放在listValue中。
步骤b,用户对网页P进行操作时,判断网页所使用的模板是否为文章模板。
步骤c,如果是文章模板,根据文章模板的配置信息从数据库中查找出需要更新的静态列表记录。具体的操作如下:
首先查找无模板限制的静态列表记录。创建静态列表集合M,获得网页P的所属栏目和此栏目到一级栏目的各级栏目C集合,并在C集合中加入数据“A”(表示无栏目设置)。查找所有listCol被C集合包含、updateType为“0”,并且listTemp的值为“A”的静态列表记录,并将其加入到集合M中。
再查找有模板限制的静态列表记录。将listCol被C集合包含、updateType为“0”作为前提条件,listTemp的值为网页P的使用模板。查出所有的符合条件的静态列表集合W。
解析网页P页面的所有组件值形成第一键值对D1。迭代静态列表集合W。将每个静态列表记录中的listValue解析成第二键值对D2。对第二键值对D2中的每个键值对逐个于第一键值对D1中相同键名的值进行分析,判断此静态列表记录是否满足更新要求。具体的判断是:
1、先将第二键值对D2中的栏目设置和模板设置剔除掉,迭代每个第二键值对D2中的键值对<K,V>。
2、当K为数字范围的临界值时,判断对应的第一键值对D1中K的值是否在范围V内。
3、当K为日期范围的临界值时,判断对应的第一键值对D1中K的值是否在范围V内。
4、当K为文本字段包含值时,判断对应的第一键值对D1中的K值是否含有V。
5、当符合上述三个条件时,则判断此静态列表记录符合更新条件。
将不符合条件的静态列表记录从W中剔除。将W中的所有加到集合M中。在锁定A的状态下将集合M中的每条记录和目前的时间组成一个键值对加入到A中,如果遇到相同的键名K,则覆盖之前的记录。
步骤4,如图2,静态列表更新是一个独立的线程。当某条静态列表记录R的updateType值为“0”时,在更新后就会将R从A中删除。当updateType为“1”时,更新后则不会将其删除。所有需要更新的静态列表记录在加入A时都和当前时间t组成键值对<K,V>。在线程更新列表记录之前,需要根据V值判断间隔是否超过时间T,以避免短时间内频繁更新。由于updateType为“1”时,更新虽然后不删除,但是要将此键值对<K,V>的V值修改为当前时间。