ASP关于缓存问题

来源:百度知道 编辑:UC知道 时间:2024/05/13 02:19:26
<%
Application.Lock
Application("NumVisits")=Application("NumVisits") + 1
Application.Unlock
%>
欢迎光临本网页,你是本页的第<%=Application("NumVisits")%>位访客 !

为什么缓存写入后 几个小时没去访问 就会自动清空?

代码应该没问题吧 我听说 缓存只有在 服务器重起后 才会失效 可我几个小时没人去访问之后在去访问 缓存就没了

举例例如 我把一些数据写入缓存中 写成功后 刷新页面可无需在访问数据库,直接重 缓存读取,可是过了几个小时后我在次访问 缓存就失效了 必须在访问数据库重新写入缓存 这是什么原因

上面那位一开始就说错了,session是用于记录用户(客户端的),而application则是在服务器端的全局性变量或是常量,它只能是在被释放或是服务器重启时才会丢失,而不是上面所说的20分钟。
楼主如果说确认服务器没有被重新启动(电脑没有关机、待机),那我就不知道是怎么一会事了。

不是的,是会失效的,保存时间好象是20分钟,session是20分钟。你要实现这样的缓存,需要每过一段时间刷新一次cache

参考一下这段代码吧
<%
Const CACHE_DEFAULT_INTERVAL = 30 '每隔30秒刷新一次cache
Dim HTMLStream
Dim IsExpires
IsExpires = CacheExpires

Function CacheExpires
Dim strLastupdate
Dim result
strLastupdate = Application("Lastupdate")
If (strLastupdate = "") Or (CACHE_DEFAULT_INTERVAL < DateDiff("s", strLastupdate, Now)) Then
result = true
SetLastupdateTime
Else
result = false
End If
CacheExpires = result
End Function

Sub SetLastupdateTime
Application.Lock
Application("Lastupdate") = CStr(now())
Application.UnLock
End Sub

Sub GetHTMLStream
If IsExpires Then
updateHTMLStream