ASP緩存技術(shù)
發(fā)表時(shí)間:2024-06-11 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]使用ASP中的緩存技術(shù)可以很大程度上提高你的網(wǎng)站性能,其實(shí)這些實(shí)現(xiàn)方法是非常的簡(jiǎn)單,它將說明如何在服務(wù)器上的緩存是如何工作以及你如何使用一種被稱為斷開連接的ADO連接技術(shù)。 在介紹這些技術(shù)之前先說明一下到底什么是ASP的緩存技術(shù)。 所謂緩存其實(shí)就是在內(nèi)存中開辟一個(gè)用來保存數(shù)據(jù)的空間,使用緩存你就不...
使用ASP中的緩存技術(shù)可以很大程度上提高你的網(wǎng)站性能,其實(shí)這些實(shí)現(xiàn)方法是非常的簡(jiǎn)單,它將說明如何在服務(wù)器上的緩存是如何工作以及你如何使用一種被稱為斷開連接的ADO連接技術(shù)。
在介紹這些技術(shù)之前先說明一下到底什么是ASP的緩存技術(shù)。
所謂緩存其實(shí)就是在內(nèi)存中開辟一個(gè)用來保存數(shù)據(jù)的空間,使用緩存你就不用頻繁的訪問你保存在硬盤上的數(shù)據(jù)了,靈活的使用緩存你就免去了心疼的看著可憐的硬盤飽受讀數(shù)據(jù)時(shí)的折磨了。當(dāng)你一旦執(zhí)行了一個(gè)查詢動(dòng)作,并且將查詢結(jié)果放入緩存中后,你就可以很迅速的重復(fù)訪問這些數(shù)據(jù)了。而如果你不把數(shù)據(jù)放入緩存的話,當(dāng)你再次執(zhí)行這個(gè)查詢時(shí),服務(wù)器會(huì)將進(jìn)程耗費(fèi)在從數(shù)據(jù)庫(kù)中獲取并排序上了。
當(dāng)數(shù)據(jù)保存在緩存中時(shí),再次查詢時(shí)耗費(fèi)的時(shí)間主要是在顯示數(shù)據(jù)的時(shí)間上了。也就是說,我們不應(yīng)該把經(jīng)常需要改變的數(shù)據(jù)放到服務(wù)端的緩存中,我們應(yīng)該把改變少,但是又需要經(jīng)常訪問的數(shù)據(jù)放到緩存中。
現(xiàn)在我們先討論ASP在服務(wù)端使用緩存的技術(shù),過會(huì)再討論ASP如何在客戶端使用
緩存的技術(shù)。
當(dāng)你有大量的數(shù)據(jù)(靜態(tài)的,就是說變動(dòng)比較少的)需要顯示給客戶端時(shí),你就可以考慮使用服務(wù)端的緩存技術(shù)了。這種技術(shù)尤其適用于那些顯示風(fēng)格一致性比較強(qiáng)的網(wǎng)站(呵呵,對(duì)于非主流的網(wǎng)站可不好用的說。)
其實(shí)實(shí)現(xiàn)方法特別的簡(jiǎn)單,大家只要看看下面這個(gè)簡(jiǎn)單的例子就明白了。
這是一個(gè)用來顯示書籍分類的例子程序
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;
}
% >
很簡(jiǎn)單把,其實(shí)就是用了很簡(jiǎn)單的Application技術(shù),而且就一句話的不同:
Application("BooksListBox") = BooksListBox
你可以驗(yàn)證一下你就會(huì)發(fā)現(xiàn)服務(wù)器上的請(qǐng)求數(shù)量會(huì)降低不少的。這種情況尤其適合與那些更新不是很頻繁的網(wǎng)站內(nèi)容,例如你一天(或則很長(zhǎng)時(shí)間)只更新一次。
下面再討論一種客戶端的緩存技術(shù)這種技術(shù)也叫斷開連接的ADO連接技術(shù)(翻譯水平太次,聽上去怎么這么別扭)。這種技術(shù)主要使用在用來保存用戶個(gè)人信息,例如用戶的密碼,代號(hào)等等上面。它主要使用了ADO的一些屬性。同時(shí)也回答了一些網(wǎng)友曾經(jīng)提到過的能否在Applocation中使用ADO對(duì)象的問題。解釋不清楚,下面讓代碼來發(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")
'注意下面這兩句話,就是用來實(shí)現(xiàn)那個(gè)叫可用的斷開連接的ADO技術(shù)
rsCustomers.CursorLocation = adUseClient
rsCustomers.Open SQL, cnnAdvWorks, adOpenStatic, AdLockReadOnly
' 斷開RecordSet的和數(shù)據(jù)庫(kù)的連接
rsCustomers.ActiveConnection = Nothing
Set Application("rsCustomers") = rsCustomers
End Sub
文件Users.ASP
< %
'Clone方法使得每個(gè)用戶擁有自己的一個(gè)RecordSet集合
Set yourUsers = Application("rsUsers").Clone
Set UserName = yourUsers("UserName")
Set Password = yourUsers("Password")
Do Until yourUsers.EOF
% >
用戶姓名:< %= UserName % > 用戶密碼:< %= Password % >
< %
yourUsers.MoveNext
Loop
% >(出處:熱點(diǎn)網(wǎng)絡(luò))