当前位置: 网学 > 编程文档 > ASP > 正文

如何增强ASP程序性能

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/17
下载{$ArticleTitle}原创论文样式

  缓存ADO连接通常不是一个好的策略。如果一个连接对象被存储在Application对象中,并在所有的页面使用,那么所有页面将会争夺该连接的使用。如果存储在ASP Session对象中,那么将要为每一个用户都打开数据库连接。这将挫败连接池的使用意图,并且在Web服务器和数据库上都施加了不必要的高代价压力。

  为了替代缓存数据库连接,可以在使用ADO的每个ASP页面中创建并释放ADO对象。这将非常有效,因为IIS拥有内建的数据库连接池。更准确地说,IIS自动处理OLEDB和ODBC连接池,这将保证在每个页面创建并且释放连接的工作高效进行。

  由于连接的记录集存储了数据库连接的参考,所以,不要在Application或Session对象中缓存连接的记录集。然而,可以安全地缓存disconnected类型的记录集,它们并不保存相应数据库连接的参考。为了断开记录集,执行下面2步:

 Set rs = Server.CreateObject("ADODB.RecordSet")
 rs.CursorLocation = adUseClient '' step 1
 
 '' Populate the recordset with data
 rs.Open strQuery, strProv
 
 '' Now disconnect the recordset from the data provider and data source
 rs.ActiveConnection = Nothing '' step 2

  更多的关于连接池的信息请访问 ADO and SQL Server。

 

技巧6:聪明地使用Session对象

  Session在繁忙站点上使用时有几个缺陷。繁忙的意思是:站点上每秒有上百的页面被请求,或者同时有上千的访问用户。这个技巧对于那些要求水平扩展强的站点非常重要,也就是指这些站点:它们利用多个服务器完成数据装载或者处理大量容错。对于小型站点,比如内部网Intranet,Session是非常值得提倡的。

  再次重申,ASP自动地为每一个首次点击Web服务器的用户创建一个Session,每一个Session占有大约10KB的内存,生存期默认是20分钟。

  使用Session最大的问题不是性能,而是扩展性,Session不能跨越多个Web服务器,一旦在一个服务器上创建了Session,它的数据就驻留在那里。这意味着,如果在Web上使用Session,你就得为每一个直接访问存放Session服务器的用户请求设计一个策略。这就是将用户“粘”在Web服务器上,术语“sticky sessions”就来源于此。如果Web服务器遇到障碍,“Stuck”用户就会丢失他们的Session状态,因为Session不保留在磁盘上。

  执行粘性session的策略包括硬件与软件解决方式,比如windows2000高级服务器中的 Network Load Balancing 以及Cisco公司的Local Director,但换取这些要牺牲一定的扩展性。

  Application对象也不能跨越服务器。如果需要在Web群中共享并更新Application数据,就需要使用后台数据库。然而,只读Application数据在Web群中仍然很有用。

  许多对任务要求严格的站点都要设立至少2个Web服务器,所以在设计严格任务的应用程序时,就需要执行“sticky sessions”,或者简单地避免使用Session,同时也可以采取其他保存用户状态到独立Web服务器的管理技术。

  如果不使用Session,一定要确认将它们关闭,这可以通过Internet服务管理器实现。如果决定使用Session,可以通过几种方法来最小化它们的影响。

  可以将不需要Session的内容(比如帮助画面,访问者区域,等等)移动到关闭Session的独立ASP应用程序中。在基础页面上,可以给ASP一个指示,让它不需要使用Session。将下面的代码直接加入到ASP页面的头部:
  

<% @EnableSessionState=False %>

  使用这个指示的一个很好的解释是在框架结构中Session创建了一个有趣的问题。ASP确保在一个时刻只有一个来自Session的请求被执行,这就确保了如果浏览器为单个用户请求多个页面时,只有一个ASP请求

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号