当前位置: 首页 > 图文教程 > 网络编程 > ASP > ASP编写计数器的优化方法

ASP
一个ASP版的图片浏览管理器
无组件上传图片至SQLSERVER数据库
利用Jmail.Message发送邮件
用Web页面执行客户端程序
多图片上传到指定的目录并存到数据库
dreamweaverMX通用分页代码研究
下拉菜单输入,根据输入内容自动定位
中文的无组件文件上传ASP函数
一个利用adsi得到局域网信息的asp文件
根据需要动态include不同的文件
让自定义文件下载支持断点续传
用数组实现数据记录的批量录入方法
上传的进度条 实时反映上传情况
用ASP动态生成javascript的表单验证代码
ASP 编程中20个非常有用的例子
ASP生成Word文档的又一方法
用asp解析图片地址,并将其保存。
利用ASP的文件操作实现用户管理
创建 Visual Basic COM 组件在 ASP 中使用
调试 ASP 中使用的 Visual Basic COM 组件

ASP编写计数器的优化方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 105 ::
收藏到网摘: n/a

很多的网站都有记数器,用来记录网站的访问量,这给网站管理员即时了解本网站的运行及访问情况提供了很多的方便。笔者研究过很多用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") & "位访客!")

%>