使用ASP中的緩存技術可以很大程度上提高你的網站性能,其實這些實現方法是非常的簡單,它將說明如何在服務器上的緩存是如何工作以及你如何使用一種被稱為斷開連接的ADO連接技術。 在介紹這些技術之前先說明一下到底什么是ASP的緩存技術。 所謂緩存其實就是在內存中開辟一個用來保存數據的空間,使用緩存你就不用頻繁的訪問你保存在硬盤上的數據了,靈活的使用緩存你就免去了心疼的看著可憐的硬盤飽受讀數據時的折磨了。當你一旦執(zhí)行了一個查詢動作,并且將查詢結果放入緩存中后,你就可以很迅速的重復訪問這些數據了。而如果你不把數據放入緩存的話,當你再次執(zhí)行這個查詢時,服務器會將進程耗費在從數據庫中獲取并排序上了。 當數據保存在緩存中時,再次查詢時耗費的時間主要是在顯示數據的時間上了。也就是說,我們不應該把經常需要改變的數據放到服務端的緩存中,我們應該把改變少,但是又需要經常訪問的數據放到緩存中。
現在我們先討論ASP在服務端使用緩存的技術,過會再討論ASP如何在客戶端使用 緩存的技術。 當你有大量的數據(靜態(tài)的,就是說變動比較少的)需要顯示給客戶端時,你就可以考慮使用服務端的緩存技術了。這種技術尤其適用于那些顯示風格一致性比較強的網站(呵呵,對于非主流的網站可不好用的說。) 其實實現方法特別的簡單,大家只要看看下面這個簡單的例子就明白了。 這是一個用來顯示書籍分類的例子程序 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 你可以驗證一下你就會發(fā)現服務器上的請求數量會降低不少的。這種情況尤其適合與那些更新不是很頻繁的網站內容,例如你一天(或則很長時間)只更新一次。
下面再討論一種客戶端的緩存技術這種技術也叫斷開連接的ADO連接技術(翻譯水平太次,聽上去怎么這么別扭)。這種技術主要使用在用來保存用戶個人信息,例如用戶的密碼,代號等等上面。它主要使用了ADO的一些屬性。同時也回答了一些網友曾經提到過的能否在Applocation中使用ADO對象的問題。解釋不清楚,下面讓代碼來發(fā)言: 文件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 % >(出處:熱點網絡)
|