经典ASP +缓存重用数据库数据

时间:2013-12-18 18:07:05

标签: asp-classic

我们有一个经典的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  %>

2 个答案:

答案 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内完成。