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

本文介绍了一种优化ASP网站计数器程序的方法,通过使用Application变量减少文件读写频率,减轻服务器负担。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

ASP+ACCESS的版本安装说明: 1.需要支持ASP和Access数据库的空间。 2.超级管理员登陆页面:qqcf_admin.asp,默认用户名为:www.qqcf.com,密码:www.qqcf.com,请安装后立即修改! 3.计数器的图片制作的PhtoShop和Flash源文件放在QQCF_Pic目录里,你可以修改成你自己的图片,当然也可以自己做啦。 4.如果忘记密码请打开数据库修改,把Password字段的对应值修改为254a978baaa071ad,这样密码就变为www.qqcf.com 5.免费版请保留版权使用,作者不对其作品付任何责任,你可以任意传播。 6.未经作者许可请勿用于任何商业用途。 7.计数器的MsSql版,采用DLL组件、存储过程、事务编写,支持百万级数据量,提供免费下载,无任何限制,只需保留版权使用即可,需要的朋友请到作者网站http://www.qqcf.com下载。 8.必须接受以下乘风原创程序用户协议方可以使用本计数程序 功 能: 1.总共60记数器图片样式自由选择,并且可以方便地增加记数器图片样式。 2.可以设置计数器显示数字,显示位数,计数器是否隐藏,统计信息是否公开等。 3.页面显示记数和IP防刷新记数两种记数模式,支持Script方式和Img方式调用计数器代码。 4.可以记录来访客的来源IP地址和来源页面信息,在线人数。 5.每月、每天和每小时的访问数据统计,回头率统计,每个网页浏览统计。 6.搜索引擎统计,还可以自己定义搜索引擎,搜索关键字统计。 7.注册用户找回密码功能,用户可以重置统计,删除注册账号。 8.多用户计数器,具有管理注册用户功能。 9.系统会自动删除过多的以前的无用的来源和在线记录,保证系统快速稳定运行,还可以在线压缩数据库。 10.增加计数器图片样式的方法:把新的计数器图片复制到qqcf_counterpic目录,然后设置样式数量即可。 11.安全性:密码MD5加密,注册、登陆使用验证码,完全防Sql注入 独有的特色: 1.计数器数字图片和统计图标两种机制共存,众多设置可调。 2.Script和Img两种方式调用计数器,Img方式计数器可以在任何能插入图片的地方使用。 3.独有的错误自动修复机制,能在计数器发生错误后自动修复。 4.完全杜绝并发线程容易对数据库造成的损坏,在流量大的网站上使用表现很稳定。 5.缓存机制,在缓存中保存数据,操作常见动作,大量减少对数据库的增加,删除频繁的操作。 6.稳定性、安全性、速度上表现都很优秀,功能齐全,代码集成程度高、完全公开,专业制作,完全免费。 乘风原创程序用户协议 乘风原创程序作者(以下简称作者)在此特别提醒,用户(您)欲使用乘风原创程序(以下简称乘风程序),必须事先认真阅读本协议,包括免除或者限制作者的免责条款及对用户的权利限制。请您审阅并接受或不接受本服务条款(未成年人审阅时应得到法定监护人的陪同)。如您不
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值