asp 怎么实现静态页面html自动更新
来源:ASP学习网 作者:Admin 时间:08-05-28 点击:
也就是让一个静态的html页面定时更新。显示最新信息。有什么用处吗?哈哈,用处可就大了。例如显示最新在线人数。大家可能会说。我用动态的不就行了,可以,但你想下若是一个网站每天
有上百万的流量。而他要想显示些最新的东西。怎么办?
1.用动态显示,也就是.asp。流量大了一起刷死。每次都要查询数据库。不光数据库受不了。服务器带宽和cpu浪费很厉害。
2.用静态。也就是叫他定时生成。
可想到的方法有
I.用定时任务--弊端最大,移植性差可控性差。但操作简单。
II.用静态页面包含一个js文件例如<script language='javascript' src='checkmake.asp'></script>然后判断页面上次修改时间。--弊端:asp对文件的操作速度俺不敢恭维。慢的要命。占服务
器资源还厉害。我想这事asp的通病。尽量不用文件操作就别用。实在是太慢了。
III.方法类似二。但是是把上次生成文件时的时间存到缓存里。然后下次加载时判断当前时间和缓存时间差。说白了也就是用application对象。因为这个对象是全局性的也就是说只要你的网站
在运行他就会存在。
二:
下面说下第三种方法的实现:其他两种抛弃。不适用。
原理如下:
假设有一个静态页面/index.html我想让他每隔1小时就自动生成一次显示最新信息。所以我在页面底部包含个js文件<script language='javascript' src='checkmake.asp'></script>
这样每次你打开index.html时,这个页面就会加载一次checkmake.asp文件。checkmake.asp这个文件所做的就是读取当前时间。然后再读取缓存时间。判断时间差。检测是否生成。不到1小时就
response.end所以大部分时间是不生成的。不读取数据库的。
下面是代码。
' -----缓存类开始--说明:这是我从94kkbbs里拆出来的。哈哈文件名cache.asp
Class clsCache
private cache,cacheNames,expireTime,expireTimeName,path
private sub class_initialize()
path=request.servervariables("url")
path=left(path,instrRev(path,"/"))
end sub
private sub class_terminate()
end sub
public property get valid '读取缓存是否有效/属性
if isempty(cache) or (not isdate(expireTime) or CDate(expireTime)<now) then
valid=false
else
valid=true
end if
end property
public property get value '读取当前缓存内容/属性
if isempty(cache) or (not isDate(expireTime)) then
value=null
elseif CDate(expireTime)<now then
value=null
else
value=cache
end if
end property
public property let name(str) '设置缓存名称/属性
cacheNames=str&path
cache=application(cacheNames)
expireTimeName=str&"expire"&path
expireTime=application(expireTimeName)
end property
public property let expire(tm) '设置缓存过期时间/属性
expireTime=tm
application.Lock()
application(expireTimeName)=expireTime
application.UnLock()
end property
public sub add(varCache,varExpireTime) '对缓存赋值/方法
if isempty(varCache) or not isDate(varExpireTime) then
exit sub
end if
cache=varCache
expireTime=varExpireTime
application.lock
application(cacheNames)=cache
application(expireTimeName)=expireTime
application.unlock
end sub
public sub clean() '释放缓存/方法
application.lock
application(cacheNames)=empty
application(expireTimeName)=empty
application.unlock
cache=empty
expireTime=empty
End sub
public function verify(varcache2)
if typename(cache)<>typename(varcache2) then
verify=false
elseif typename(cache)="Object" then
if cache is varcache2 then
verify=true
else
verify=false
end if
elseif typename(cache)="Variant()" then
if join(cache,"^")=join(varcache2,"^") then
verify=true
else
verify=false
end if
else
if cache=varcache2 then
verify=true
else
verify=false
end if
end if
end function
End Class
用法和例子如下
dim lmaketime
Set Cache = New clsCache
Cache.Name="maketime" '这个名字随便起也就是缓存的名字类似你要把个商品放到仓库是要给他贴个标签好以后辨认
if Cache.valid then '判断当前缓存的对象是否有效也就是上边的名字maketime缓存
lmaketime=Cache.value'若有效就把缓存值读出来。否则读出当前时间并保存到缓存
else
lmaketime=now()
Cache.name="maketime" '注意这个名字的和上边的哪个一样。
Cache.add lmaketime,dateadd("h",2,now) '缓存时间是2个小时第一个参数是要缓存的数据。第二个参数是时间
end if
NowDate=now()
&nbs