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

微软建议的ASP性能优化28条守则(1)

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

If d = ?? Then

'' FetchEmploymentStatusList function (not shown)

'' fetches data from DB, returns an Array

d = FetchEmploymentStatusList()

Application(?EmploymentStatusList?) = d

End If

GetEmploymentStatusList = d

End Function

%>

可以为所需要的每个数据块编写类似的函数。

应以什么格式存储数据?可以存储任何变体类型,因为所有脚本变量都是变体型。例如,您可以存储字符串、整数或数组。通常,您将以这些变量类型之一存储 ADO 记录集的内容。要从 ADO 记录集获取数据,您可以手工将数据复制到 VBScript 变量,一次一个字段。使用一个 ADO 记录集持久函数 GetRows()、GetString() 或 Save()(ADO 2.5),可加快速度且更容易一些。其详细情况已超出本文所讨论的范围,但下面给出了一个函数举例,说明使用 GetRows() 返回记录集数据的一个数组:

'' Get Recordset, return as an Array

Function FetchEmploymentStatusList

Dim rs

Set rs = CreateObject(?ADODB.Recordset?)

rs.Open ?select StatusName, StatusID from EmployeeStatus?, _

?dsn=employees;uid=sa;pwd=;?

FetchEmploymentStatusList = rs.GetRows() ? Return data as an Array

rs.Close

Set rs = Nothing

End Function



对上面举例做更进一步改进,可以将 HTML 缓存为列表,而不是数组。下面是简单的示例:

'' Get Recordset, return as HTML Option list

Function FetchEmploymentStatusList

Dim rs, fldName, s

Set rs = CreateObject(?ADODB.Recordset?)

rs.Open ?select StatusName, StatusID from EmployeeStatus?, _

?dsn=employees;uid=sa;pwd=;?

s = ?<select name=??EmploymentStatus??>? & vbCrLf

Set fldName = rs.Fields(?StatusName?) '' ADO Field Binding

Do Until rs.EOF

'' Next line violates Don''t Do String Concats,

'' but it''s OK because we are building a cache

s = s & ? <option>? & fldName & ?</option>? & vbCrLf

rs.MoveNext

Loop

s = s & ?</select>? & vbCrLf

rs.Close

Set rs = Nothing '' See Release Early

FetchEmploymentStatusList = s '' Return data as a String

End Function

在适当的条件下,可以将 ADO 记录集本身缓存在 Application 或 Session 作用域中。有两个警告:

必须将 ADO 标记为自由线程

必须使用断开连接的记录集。

如果不能保证满足这两个要求,则不要缓存 ADO 记录集。在下面的“非敏捷组件”和“不要缓存连接”技巧中,我们将讨论将 COM 对象存储在 Application 或 Session 作用域中的危险性。

当您将数据存储在 Application 或 Session 作用域时,数据将保留在那里,直到您以编程方式改变它、Session 过期或 Web 应用程序重新启动为止。如果数据需要更新怎么办?要手工强制对 Application 数据进行更新,您可以访问只有管理员才可访问的 ASP 页来更新数据。或者,您可以通过函数定期自动刷新数据。下面例子存储带有缓存数据的时间戳,并隔一段时间后刷新数据。

<%

'' error handing not shown

Const UPDATE_INTERVAL = 300 '' Refresh interval, in seconds

'' Function to return the employment status list

Function GetEmploymentStatusList

UpdateEmploymentStatus

GetEmploymentStatusList = Application(?EmploymentStatusList?

网学推荐

免费论文

原创论文

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