ASP快取技術 (轉)

worldblog發表於2007-12-25
ASP快取技術 (轉)[@more@]

使用中的快取技術可以很大程度上提高你的網站,其實這些實現方法是非常的簡單,它將說明如何在上的快取是如何工作以及你如何使用一種被稱為斷開連線的ADO連線技術。
  在介紹這些技術之前先說明一下到底什麼是ASP的快取技術。
  所謂快取其實就是在中開闢一個用來儲存資料的空間,使用快取你就不用頻繁的訪問你儲存在上的資料了,靈活的使用快取你就免去了心疼的看著可憐的硬碟飽受讀資料時的折磨了。當你一旦了一個查詢動作,並且將查詢結果放入快取中後,你就可以很迅速的重複訪問這些資料了。而如果你不把資料放入快取的話,當你再次執行這個查詢時,伺服器會將程式耗費在從中獲取並排序上了。
  當資料儲存在快取中時,再次查詢時耗費的時間主要是在顯示資料的時間上了。也就是說,我們不應該把經常需要改變的資料放到服務端的快取中,我們應該把改變少,但是又需要經常訪問的資料放到快取中。

  現在我們先討論ASP在服務端使用快取的技術,過會再討論ASP如何在客戶端使用
快取的技術。
  當你有大量的資料(靜態的,就是說變動比較少的)需要顯示給客戶端時,你就可以考慮使用服務端的快取技術了。這種技術尤其適用於那些顯示風格一致性比較強的網站(呵呵,對於非主流的網站可不好用的說。)
  其實實現方法特別的簡單,大家只要看看下面這個簡單的例子就明白了。
  這是一個用來顯示書籍分類的例子
DisplayBooks.ASP:

< %@ LANGUAGE=script % >
< html >
< body >
< fomethod=post >
書籍分類; < %= getBooksListBox() % >
< p>
< input type=submit >

 

< %
function getBooksListBox()
{
BooksListBox = Application("BooksListBox")
if (BooksListBox != null) return BooksListBox;
crlf = String.fromCharCode(13, 10)
BooksListBox = "< name=Books>" + crlf;
= "SELECT * FROM Books ORDER BY Name";
cnnBooks = Server.Create("ADO.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 FilesCommon Filessystemadomsado15.dll"-- >
< SCRIPT LANGUAGE= RUNAT="Server" >
Sub Application_OnStart
SQL = "SELECT UserName, Pass 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
L
% >


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-995697/,如需轉載,請註明出處,否則將追究法律責任。

相關文章