您现在的位置: 无忧电子商务网 >> 信息学院 >> 程序开发 >> asp >> 正文

提高ASP性能的22个技巧(一)

作者:佚名    信息学院来源:整理    点击数:    更新时间:2008-1-24 我要参与讨论

  地,所有非Agile的组件被缓存到Session或Application中时,都将产生性能瓶颈。Agile组件是指聚合了Free-threaded marshaler(FTM)并且线程模型是Both 
(ThreadingModel=Both),或线程模型是Neutral(Netural新出现在Windows 2000 
和COM+中)的组件。下面的组件都是非Agile的: 


  自由线程模型组件(除非他们聚合了FTM) 
  Apartment线程模型组件 
  单线程组件 

  Configured组件(MTS/COM+库和服务包/应用)是非Agile的,除非它们是Neutral线程模型的。Apartment线程模型组件和其他非Agile组件最好是工作在页面范围内(就是说,他们在一个单一ASP页面中创建和销毁)。 

  在IIS 4.0中,线程模型是Both的组件被看作是Agile的,但在IIS 5.0中,他们不再满足Agile的条件。组件线程模型必须是Both的,并且聚合了FTM,才被看作Agile的。如果试图将一个用Server.CreateObject创建的非Agile组件存储到 
Application对象中时,IIS 5.0将会抛出一个错误。 

  当ADO组件被标记为自由线程模型时,ADO记录集对象可以安全地存储。可以用Makfre15.bat,一般是放在\\program Files\Common\System\ADO这个文件夹里,将ADO组件标记为自由线程模型。有一点要注意:当用Access作后台数据库时,ADO不能被标记为自由线程模型。词典(Dictionary)组件也是Agile对象。

  技巧5:不要缓存数据库连接 

  缓存ADO Connection对象是一个不好的策略。如果一个Connection对象被存储在 
Application对象中并被所有页面使用,所有页面就会争着使用这个连接。如果 
Connection对象被存储在Session对象中,就要为每个用户创建一个数据库连接,这就消减了连接池的作用,并且增大了Web服务器和数据库服务器的压力。可以用在每个使用ADO的ASP页创建和释放ADO对象来替代缓存数据库连接;因为IIS内建了数据库连接池,所以这种方法非常有效。 

  既然有连接的记录集保存了一个数据库连接的引用,因此也不应该在Application或Session对象中保存有连接的记录集。但是,你可以安全的缓存无连接的记录集,因为它并不包含到数据连接的引用。要想挂断一个记录集,可以采取如下两个步骤: 

  Set rs = Server.CreateObject("ADODB.RecordSet") 
  rs.CursorLocation = adUseClient ' 第一步 

  rs.Open strQuery, strProv 

  ' 将记录集同数据提供者和数据源挂断 
  rs.ActiveConnection = N

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页

在google里搜索更多提高ASP性能的22个技巧(一)

Google
Web www.51ec.org
【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
我来说两句 对此文章发表了评论
  昵 称: *必填    ·注册用户·
  评 分: 1分 2分 3分 4分 5分     严禁发表危害国家安全、政治、黄色淫秽等内容的评论,用户需对自己在使用本网站服务过程中的行为承担法律责任。本站管理员有权保留或删除评论内容,评论内容只代表机友个人观点,与本网站立场无关。  
评 论
内 容

 
评论列表 (最新 评论仅限网友观点!)

供求信息




| 设为首页 | 加入收藏 | 关于我们 | 广告服务 | 联系方式 | 友情链接 | 版权申明