改进性能和样式的 24个 ASP 技巧第1/2页(3)


d = Application("EmploymentStatusList") 
If d = "" Then 
' FetchEmploymentStatusList 函数(不显示) 
' 从 DB 中取出数据,返回数组 
d = FetchEmploymentStatusList() 
Application("EmploymentStatusList") = d 
End If 
GetEmploymentStatusList = d 
End Function 
%> 

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

数据应该以什么格式存储?任何变量类型均可存储,因为所有脚本变量是各不相同的。例如,可以存储字符串、整型或数组。通常,您将以这些变量类型之一存储 ADO 记录集的内容。若要获取 ADO 记录集衍生的数据,可以手工将数据复制到 VBScript 变量中,每次一个字段。使用一个 ADO 记录集保留函数 GetRows()、GetString() 或 Save() (ADO 2.5),会更快更简便。完整而详细的内容已超出了本文的范围。下面的演示函数使用了 
GetRows() 
来返回记录集数据的数组: 

' 取记录集,以数组返回 
Function FetchEmploymentStatusList 
Dim rs 
Set rs = createObject("ADODB.Recordset") 
rs.Open "select StatusName, StatusID from EmployeeStatus", _ 
"dsn=employees;uid=sa;pwd=;" 
FetchEmploymentStatusList = rs.GetRows() ' 以数组返回数据 
rs.Close 
Set rs = Nothing 
End Function 

对上面示例的进一步改进应当是缓存该列表的 HTML,而不是缓存数组。下面是一个简单的范例: 

' 取记录集,以"HTML 选项"列表返回 
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 字段绑定 
Do Until rs.EOF 
' 下面一行违背了不要进行字符串连接, 
' 但这是可以的,因为我们正在建立高速缓存 
s = s & " <option>" & fldName & "</option>" & vbCrLf 
rs.MoveNext 
Loop 
s = s & "</select>" & vbCrLf 
rs.Close 
Set rs = Nothing ' 参见尽早释放 
FetchEmploymentStatusList = s ' 以字符串返回数据 
End Function 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/3512.html