ASP编写计数器的优化方法

来源:asp之家 时间:2009-01-21 19:46:00 

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

猜你喜欢

  • PHP实现打包下载文件的方法示例

    2024-05-11 09:45:54
  • 在Python中字符串、列表、元组、字典之间的相互转换

    2021-08-30 07:09:42
  • 《Python学习手册》学习总结

    2021-09-17 08:55:01
  • Django框架实现的普通登录案例【使用POST方法】

    2021-10-12 18:05:10
  • CentOS 7中安装mysql server的步骤分享

    2024-01-20 13:33:56
  • 利用python实现汉诺塔游戏

    2021-02-19 03:03:45
  • Python常用的内置序列结构(列表、元组、字典)学习笔记

    2021-02-18 21:25:45
  • js中位数不足自动补位扩展padLeft、padRight实现代码

    2024-04-19 10:46:42
  • Python制作个性化的词云图实例讲解

    2021-10-17 03:51:02
  • Python如何使用字符打印照片

    2023-06-12 09:20:34
  • Python迭代器iterator生成器generator使用解析

    2023-11-17 18:50:24
  • Oracle 9i产品文档

    2010-07-16 13:35:00
  • 深入讲解Python中的迭代器和生成器

    2021-11-29 05:32:56
  • SQL Server数据库入门学习总结

    2024-01-21 18:23:25
  • python time时间库详解

    2023-10-09 03:20:57
  • 土豆网前端概况

    2008-01-24 12:06:00
  • Flask使用Pyecharts在单个页面展示多个图表的方法

    2021-10-12 18:16:35
  • 史上最简单的MySQL数据备份与还原教程(中)(三十六)

    2024-01-24 08:40:56
  • linux下通过go语言获得系统进程cpu使用情况的方法

    2024-05-08 10:13:01
  • 简单了解python shutil模块原理及使用方法

    2023-02-12 22:07:44
  • asp之家 网络编程 m.aspxhome.com