播客 > 玩代码  >  [ASP]缓存探幽深入探讨  | 登录  | RSS订阅地址  | Code平台

[ASP]缓存探幽深入探讨

用application控制cache,不重新查找数据

我先自我批评一下,好不好?我原写这个的原因是想给一些初学者一点思路,结果招来大家的一片批评声,等过短时间悄悄的剪下你们的脑瓜子,哈哈哈,不开玩笑了,确实写的不好,阅读性也不是太好的说,哈哈哈,下面我改了一下,说说我的一点思路吧.

先看源码,如果你不能理解的话就看这段
一般的说,要调用的东西是少变换的,但,一些比如首页帖子调用等还是要用缓存提高显示速度的嘛,问题是说不定数据库一年不更新,说不定10秒更新一次,如果设置固定的更新时间的话,我认为这是不太明智的,哈哈哈,你想想这样有多少次的浪费查询或者错过更新的最好时期?我想了一下,认为这样是可以做的:我们设置一个application值,如果这个值是1的话就更新数据库读到缓存中,不是的话就就读取缓存中的老值,.但是,像经典论坛这样的大型论坛,如果这样做有点奢侈,虽然可以判断发帖量超过一定数量时才改application,然后读缓存,这么麻烦还不如定期更新得了.................这是一点我说的,另外,,我也用用GetRows这个数组操作吧,这厮让我不挨了不少........不过确实是个好东西,okok,我就公布源码,当然,还不完善,谁像完善就请继续吧,可看性也变了变,很干净...............

源码:
<%  Dim strDbPath
Dim connstr
strDbPath = "data\db.mdb"
connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
connstr = connstr & Server.MapPath(strDbPath)
Set conn = Server.CreateObject("Adodb.Connection")
conn.open connstr

function CloseConn()
    If IsObject(conn) Then
    conn.close
    End If
    Set conn = nothing
End Function

  sub updatedata(size_n)
    If isNumeric(application("cachecheck")) = 0 Then
    Application.Lock
    application("cachecheck") = 1
    Application.UnLock
    End If
    response.write(application("cachecheck"))
    If application("cachecheck")=1 Or  application("cachecheck")="" Then
    Application.Lock
    application("cachecheck") =0
    Application.UnLock
    response.write("更新缓存:"&application("cachecheck"))
    sql="select top "&size_n&" * from szd_data"
    Set rs=conn.execute(sql)
    dim data
    If Rs.Eof Then
    data="no data"
    Else
    data=Rs.GetRows()
    rs.close
    set  rs=Nothing
    CloseConn()
    Application.Lock
    application("data") =data
    Application.UnLock
    End If
    End if
    data=application("data")
    intber=UBound(data)
    For ii=0 To intber
    response.write(ii+1&"<hr/>")
    For i=0 To size_n-1
    response.write(data(ii,i)&"<br/>")
    Next
    Next

End sub

 %>
 <%Call updatedata(10)%>



再次说明,更新application("cachecheck")才读取数据库更新数据,至于更新application("cachecheck")就看你的需要和方式了.

我做好了心理准备,来吧....................谢谢观赏.
天气:大雨,ccdot发表于2005-10-13 12:46:08,阅读了602次,共有个0回复.

暂无评论

  1. 想要转载我文章的人滚远远的,能想多远,就滚多远。
  2. 不要提交任何带有网址URL信息的评论.
  3. 需要更多信息?请使用站内搜索,郁闷了?听听我在听什么吧!
用户名:*验证:看不清楚请点击刷新验证码*
内容: