我们有一个经典的ASP网络应用程序,它有许多用于表单搜索的动态下拉列表。这些列表的数据很少改变。也许每年一次。每次用户访问页面时,都会查询数据库以构建这些列表。我想要一个更好的方法来做到这一点。我确信有一种方法可以一次查询数据库,然后创建一次下拉列表然后重复使用它们。但是,我不确定如何做到这一点。
以下是我要缓存的示例下拉列表:
<%sql = "SELECT personType_Id, personTypeName FROM PersonTypes ORDER BY personTypeName"
Set DB = ConnectRead ()
Set rs = DB.Execute (sql)%>
<select name="personType_Id">
<option value="">All</option>
<% WHILE NOT (rs.EOF) %>
<option value="<%=rs ("personType_Id")%>" <%IF (CINT(searchPersonTypeId) = rs("personType_Id")) THEN Response.Write("Selected") %>><%=rs ("personTypeName")%></option>
<% rs.MoveNext()
WEND %>
</select>
<% db_CloseRs rs
db_CloseConn DB %>
答案 0 :(得分:3)
我会将html输出存储在Application对象(http://www.w3schools.com/asp/asp_ref_application.asp)中。它非常适合用作缓存,因为它的内存存储在所有用户之间共享(与每个用户的会话相反,仅在会话存在的时间内)。
实施例
html = GetHtmlForSelect("personType")
Function GetHtmlForSelect(selectName)
If IsEmpty(Application(selectName)) Then
'retrieve from database
Application(selectName) = BuildHtmlWithdatabase(selectName)
End If
Return Application(selectName)
End Function
该函数从Application返回HTML。如果它不可用,则在返回结果之前更新Application对象。
PS。我不确定你是否需要检查IsEmpty,IsNull或Len()= 0 ......
答案 1 :(得分:2)
让数据库将实际的HTML写出到文件中,在ASP中包含该文件。在该表(或查询)上设置触发器以重新生成该文件。所有这些都可以在SSIS内完成。