<%@language=vbscript codepage=936 %> <% Option Explicit '************************************************************** ' 短时间内,只要浏览过就不再计数 '************************************************************** '强制浏览器重新访问服务器下载页面,而不是从缓存读取页面 Response.Buffer = True Response.Expires = -1 Response.ExpiresAbsolute = Now() - 1 Response.Expires = 0 Response.CacheControl = "no-cache" Dim ChannelID, ArticleID, sql, rs, Hits, ShowType, Action, IsLinkUrl ' 仅新增1个变量:标记是否已访问(最小改动) Dim HasVisited %> <% Call OpenConn ArticleID = PE_CLng(Trim(request("ArticleID"))) ShowType = PE_CLng1(Trim(request("ShowType"))) Action = Trim(request("Action")) IsLinkUrl = False ' 核心新增:检查Cookie(按文章ID生成唯一标识,30分钟有效期) HasVisited = (Request.Cookies("PE_Hits_" & ArticleID) = "1") If Action = "Count" Then Set rs = Conn.Execute("select sum(Hits) from PE_Article where ChannelID=" & ChannelID) If IsNull(rs(0)) Then Hits = 0 Else Hits = rs(0) End If rs.Close Set rs = Nothing Else If ArticleID = 0 Then Hits = 0 Else sql = "select Hits,linkUrl from PE_Article where Deleted=" & PE_False & " and Status=3 and ArticleID=" & ArticleID & " and ChannelID=" & ChannelID & "" Set rs = server.CreateObject("ADODB.recordset") rs.open sql, Conn, 1, 3 If rs.bof And rs.EOF Then Hits = 0 Else ' 仅新增:未访问过才计数+1,否则取原数值 If Not HasVisited Then Hits = rs(0) + 1 rs(0) = Hits rs.Update ' 新增:设置Cookie,30分钟内重复访问不计数 Response.Cookies("PE_Hits_" & ArticleID) = "1" Response.Cookies("PE_Hits_" & ArticleID).Expires = Now() + 30/1440 Else Hits = rs(0) ' 已访问过,直接取原访问量 End If End If If rs("LinkUrl")<>"" Then IsLinkUrl = True Else IsLinkUrl = False End If rs.Close Set rs = Nothing End If End If Select Case ShowType Case 0 Case 1 If IsLinkUrl = False Then Response.Write "document.write('" & Hits & "');" End Select Call CloseConn %>