現在我們先討論ASP在服務端使用緩存的技術,過會再討論ASP如何在客戶端使用
緩存的技術。
當你有大量的數據(靜態的,就是說變動比較少的)需要顯示給客戶端時,你就可以考慮使用服務端的緩存技術了。這種技術尤其適用於那些顯示風格一致性比較強的網站(呵呵,對於非主流的網站可不好用的說。)
其實實現方法特別的簡單,大家只要看看下面這個簡單的例子就明白了。
這是一個用來顯示書籍分類的例子程序
DisplayBooks.ASP文件:
< %@ LANGUAGE=JavaScript % >
< Html >
< body >
< form method=post >
書籍分類; < %= getBooksListBox() % >
< p>
< input type=submit >
< %
function getBooksListBox()
{
BooksListBox = Application("BooksListBox")
if (BooksListBox != null) return BooksListBox;
crlf = String.fromCharCode(13, 10)
BooksListBox = "< select name=Books>" + crlf;
SQL = "SELECT * FROM Books ORDER BY Name";
cnnBooks = Server.CreateObject("ADODB.Connection");
cnnBooks.Open("Books", "Admin","");
rstBooks = cnnBooks.Execute(SQL);
fldBookName = rstBooks("BookName");
while (!rstBooks.EOF){
BooksListBox = BooksListBox + " < option>" +
fldBookName + "" + crlf;
rstBooks.MoveNext();
}
BooksListBox = BooksListBox + ""
Application("BooksListBox") = BooksListBox
return BooksListBox;
}
% >
很簡單把,其實就是用了很簡單的Application技術,而且就一句話的不同:
Application("BooksListBox") = BooksListBox
你可以驗證一下你就會發現服務器上的請求數量會降低不少的。這種情況尤其適合與那些更新不是很頻繁的網站內容,例如你一天(或則很長時間)只更新一次。
下面再討論一種客戶端的緩存技術這種技術也叫斷開連接的ADO連接技術(翻譯水平太次,聽上去怎麼這麼別扭)。這種技術主要使用在用來保存用戶個人信息,例如用戶的密碼,代號等等上面。它主要使用了ADO的一些屬性。同時也回答了一些網友曾經提到過的能否在Applocation中使用ADO對象的問題。解釋不清楚,下面讓代碼來發言:
文件GLOBAL.ASA:
< !--METADATA TYPE="TypeLib" FILE="C:\Program Files\Common Files\system\ado\msado15.dll"-- >
< SCRIPT LANGUAGE=VBScript RUNAT="Server" >
Sub Application_OnStart
SQL = "SELECT UserName, PassWord FROM UserInfo"
cnnUsers = "DSN=User"
Set rsUsers = Server.CreateObject("ADODB.Recordset")
'注意下面這兩句話,就是用來實現那個叫可用的斷開連接的ADO技術
rsCustomers.CursorLocation = adUseClIEnt
rsCustomers.Open SQL, cnnAdvWorks, adOpenStatic, AdLockReadOnly
' 斷開RecordSet的和數據庫的連接
rsCustomers.ActiveConnection = Nothing
Set Application("rsCustomers") = rsCustomers
End Sub
文件Users.ASP
< %
'Clone方法使得每個用戶擁有自己的一個RecordSet集合
Set yourUsers = Application("rsUsers").Clone
Set UserName = yourUsers("UserName")
Set Password = yourUsers("PassWord")
Do Until yourUsers.EOF
% >
用戶姓名:< %= UserName % > 用戶密碼:< %= PassWord % >
< %
yourUsers.MoveNext
Loop
% >