免费邮箱 |加入收藏 | 会员中心 | 我要投稿 | RSS
您当前的位置:首页 > 网络编程 > ASP源码

最优化ASP程序性能

时间:2011-05-19 09:26:56  来源:站内  作者:潘春会

End If
% >

对于大且长的脚本,你可以通过上面的方法看到明显的性能提高。
   会话状态

   毋庸置疑,通过session在ASP中保持状态是一个非常重要的特征。然而,这将影响程序的性能。很明显,服务器的伸
缩性因为session仅仅能局限于单一服务器而变成一个问题,一个session为每一个用户都要消耗资源。

   如果不使用session变量,而且实际上也可能不需要,因为使用隐藏表单域、在数据库中存储数值以及使用查询字符
串可以完成session的功能,这时,就应该屏蔽session状态,代码如下:

   @EnableSessionState = False

   这样,ASP就将不再检查session信息。

   如果确实要依靠session状态,那么请避免在session对象中存放大量的数据。如果设置了客户端的HTTP Cookies,那
么IIS中的Session是生效的,并且直到session被中止或者到期,为每一个session分配的内存空间将一直保留。由于这个
原因,当有许多并发用户访问站点时,资源将会很快耗尽。


数据库访问

   存取数据库将会很快地减慢程序,但是没有数据库,许多站点也不行。不要使用内植的SQL语句来存取数据库,你可
以通过使用存储过程来访问数据库,这将会赢得很大的程序性能,而且,也非常得灵活。使用存储过程,并配合ActiveX
Data Objects(ADO),就能最大程度地控制存储过程如何输出。

   确认数据库经过了索引,因为这将直接影响到应用程序的整体性能。同时,注意在数据库上运行更新统计程序,从而
更好地跟踪数据的分布。注意,一些数据库,比如MS Access,不适于企业级应用,而SQL Server 7.0或者Oracle更适于做
这些。

   让SQL做设计好的工作,包括对数据进行计算、加入、排序和分组。不要用其他语言写这些功能,可以编写一个查询
来完成。

   任何要计算的字段就是下面所示的简单语法:

   SELECT count(*) FROM publishers WHERE state='NY'

   如果要计算一个特殊字段,必须先按那个字段分组,否则,将不会工作:

   SELECT count(city),city FROM publishers GROUP BY city

   接着确定排序方法:

   SELECT * FROM TableName WHERE FieldName >50 OR FieldName< 100 ORDER BY FieldName2, FieldName3

   仍然使用ODBC系统或者文件DSN来连接数据库,或者使用很快的OLEDB技术来连接。使用后者,当移动Web文件时,不
再需要修改配置。

   OLEDB位于应用程序与ODBC层之间。在ASP页面中,ADO就是位于OLEDB之上的程序。调用ADO时,首先发送给OLEDB,然
后再发送给ODBC层。可以直接连接到OLEDB层,这么做后,将提高服务器端的性能。怎么直接连接到OLEDB呢?

   如果使用SQLServer 7,使用下面的代码做为连接字符串:

strConnString = "DSN='';DRIVER={SQL SERVER};" & _
                "UID=myuid;PWD=mypwd;" & _
                "DATABASE=MyDb;SERVER=MyServer;"

   最重要的参数就是“DRIVER=”部分。如果你想绕过ODBC而使用OLEDB来访问SQL Server,使用下面的语法:

strConnString ="Provider=SQLOLEDB.1;PassWord=mypassword;" & _
               "Persist Security Info=True;User ID=myuid;" & _
               "Initial Catalog=mydbname;" & _
               "Data Source=myserver;Connect Timeout=15"

   为什么这很重要

   现在你可能奇怪为什么学习这种新的连接方法很关键?为什么不使用标准的DSN或者系统DSN方法?好,根据Wrox在他
们的ADO 2.0程序员参考书籍中所做的测试,如果使用OLEDB连接,要比使用DSN或者DSN-less连接,有以下的性能提高表
现:

   性能比较
SQL Access
  OLEDB DSN   OLEDB DSN
连接时间: 18 82 连接时间: 62 99
重复1,000个记录的时间: 2900 5400 重复1,000个记录的时间: 100 950

   这个结论在Wrox的ADO 2.0程序员参考发表。时间是以毫秒为单位,重复1,000个记录的时间是以服务器油标的方式
计算的。

   ● 只有可能,就使用客户端脚本对用户输入进行验证,以此来最小化HTTP请求的循环操作。

   如果浏览器具备执行javaScript或其他脚本的能力,请充分应用,从而解放服务器端的资源。

   下面的VBScript脚本在用户的浏览器端运行,检查用户信息,然后再提交给服务器:

< SCRIPT LANGUAGE="VBScript" >
< !--
Sub btnEnter_OnClick
  Dim TheForm
  Set TheForm = Document.MyForm
  If IsNumeric(TheForm.Age.Value) Then   
    TheForm.submit
  Else
    Msgbox "Please enter a numerical age."
  End if
End Sub
//-- >
< /SCRIPT >

< FORM  method="POST" name=MyForm  action="myfile.asp"   > 
   Name: < INPUT typr="text" name="Name"  >
   Age: < INPUT type="text" name="Age"  >

来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
如何找出DHCP地址池里未使用的IP地址
如何找出DHCP地址池里
国内常用的DNS列表
国内常用的DNS列表
Linux邮件服务器软件比较
Linux邮件服务器软件比
学用纯CSS打造可折叠树状菜单
学用纯CSS打造可折叠树
相关文章
栏目更新
栏目热门