Asp学习站欢迎你!

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

打印】 【关闭
最新评论共有 1 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 验证码: 验证码 查看所有评论