您的位置:首页技术开发ASP技巧 → 用ASP编写计数器的优化方法

用ASP编写计数器的优化方法

时间:2004/11/7 4:12:00来源:本站整理作者:蓝点我要评论(0)

    很多的网站都有记数器,用来记录网站的访问量,这给网站管理员即时了解本网站的运行及访问情况提供了很多的方便。笔者研究过很多用ASP编写的计数器程序,发现大部份都是在一个访客访问站点的时候就打文本文件或数据库,读取以前的计数值进行加1,然后再写入文件,若网站访问量很大,可能会对系统造成很大的负担,那么有没有优化的方法呢,笔者经过研究测试,答案是:有。


    熟悉ASP的朋友都知道,ASP提供一个Application属性用来保存服务器的一些公共变量,我们可以用这个变量来保存记数器的信息。


    思路是先设定两个Application变量,一个Application(“TotalCount”),用来保存记数值;另一个Application(“LastwriteTime”),用来保存上次把记数值保存到文件的时间。我们可以自己定义把计数值保存到文件的间隔时间,比如1小时、1天或者一个月。在有访客访网站的时候,让Application(“TotalCount”)进行加1,如果上次保存计数的时间与现在的时间差大于我们设定的保存时间间隔值,那么就把当前的计数值写入文件保存,这样就减少了程序的IO操作,节约了系统的负担。


    为了避免发生意外,如断电或者服务器停止反应需待重启等,我们可以设定保存时间间隔为2小时,这样即使发生意外,损失也不会太大。


例程如下:


<%


Dim oFSO   '定义FSO组件对象


Dim oFile  '定义读写文件对象


Dim nCount '定义从文件中读取的记数值


Dim sFilePath '定义计数器保存文件的路径


Const iInterval=2 '定义保存时间间隔为2小时


SFilePath=Server.MapPath("Count/Count.txt")  '假设计数器文件在根目录下的Count目录中,文件名为Count.txt


IF  Application("TotalCount")=0 or Application("TotalCount")="" THEN


'如果第一次运行网站,比如重启后,我们就需要从文件中读取出以前的计数值


   Set oFSO=Server.CreateObject("Scripting.FileSystemObject") '实例化文件操作对象oFSO


      IF not oFSO.FileExists(sFilePath) THEN


          OFile=oFSO.CreateTextFile(sFilePath,true)  '如果文件不存在,则创建一个文



      oFile.Write("1")   写入当前的计数值"1"


           oFile.close


           Application("TotalCount")=1


      ELSE


            Set oFile = oFSOt.OpenTextFile(sFilePath)


            NCount=OFile.ReadLine


            Application("TotalCount")=Clng(nCount)+1


            OFile.close


      End IF


      Application("LastwriteTime")= Now  '设置最后一次访问的时间为当前时间


 


ELSE


      Application("TotalCount")= Application("TotalCount")+1


      IF DateDiff("H", Application("LastwriteTime"),Now)>iInterval THEN


       '如果当前时间与上次保存计数值的时间差大于设定的时间间隔,则把计数值重新写入文件


           Set oFSO=Server.CreateObject("Scripting.FileSystemObject") '实例化文件操作对象oFSO


           OFile=oFSO.OpenTextFile(sFilePath,true)  '打开文件


           oFile.Write(Application("TotalCount"))   '写入当前的计数值


           oFile.close


           Application("LastwriteTime")= Now  '设置最后一次访问的时间为当前时间


       END IF


End IF


Response.Write("欢迎光临本网站,你是访问本网站的第" & Application("TotalCount") & "位访客!")


%>


本例程在Windows2000 IIS5.0下通过。


相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 VB.NET 2005编写定时关 Jquery get/post下乱码解决方法 前台gbk gb如何使用数据绑定控件显示数据ASP脚本循环语句ASP怎么提速

人气排行 轻松解决"Server Application Error"和iis"一起学习DataGridView调整列宽用ASP随机生成文件名的函数Jquery get/post下乱码解决方法 前台gbk gbODBC Drivers错误80004005的解决办法返回UPDATE SQL语句所影响的行数的方法用Javascript隐藏超级链接的真实地址两个不同数据库表的分页显示解决方案