管理會(huì)話(轉(zhuǎn)自IIS5.0文檔)
發(fā)表時(shí)間:2024-01-21 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]管理會(huì)話成功開(kāi)發(fā) Web 應(yīng)用程序的難題之一便是:當(dāng)用戶從應(yīng)用程序中的一頁(yè)轉(zhuǎn)到另一頁(yè)時(shí),要維護(hù)整個(gè)訪問(wèn)或“會(huì)話”期間的用戶信息。HTTP 是非狀態(tài)協(xié)議,也就是說(shuō) Web 服務(wù)器將每個(gè)網(wǎng)頁(yè)請(qǐng)求都當(dāng)作獨(dú)立的請(qǐng)求,服務(wù)器不保留以前請(qǐng)求的任何信息,即使它們只早于當(dāng)前請(qǐng)求幾秒鐘。這種無(wú)法記憶先前請(qǐng)求的缺陷使...
管理會(huì)話
成功開(kāi)發(fā) Web 應(yīng)用程序的難題之一便是:當(dāng)用戶從應(yīng)用程序中的一頁(yè)轉(zhuǎn)到另一頁(yè)時(shí),要維護(hù)整個(gè)訪問(wèn)或“會(huì)話”期間的用戶信息。HTTP 是非狀態(tài)協(xié)議,也就是說(shuō) Web 服務(wù)器將每個(gè)網(wǎng)頁(yè)請(qǐng)求都當(dāng)作獨(dú)立的請(qǐng)求,服務(wù)器不保留以前請(qǐng)求的任何信息,即使它們只早于當(dāng)前請(qǐng)求幾秒鐘。這種無(wú)法記憶先前請(qǐng)求的缺陷使得編寫(xiě)應(yīng)用程序很困難,比如編寫(xiě)聯(lián)機(jī)目錄,應(yīng)用程序可能要跟蹤當(dāng)用戶在目錄中不同頁(yè)間跳轉(zhuǎn)時(shí)所選的目錄項(xiàng)目。
ASP 為管理會(huì)話信息問(wèn)題提供了獨(dú)特的解決方案。使用 ASP Session 對(duì)象和服務(wù)器生成的特定用戶 ID,可以創(chuàng)建更聰明的應(yīng)用程序,以便標(biāo)識(shí)每次訪問(wèn)的用戶并收集信息,應(yīng)用程序隨后就可以利用這些信息來(lái)跟蹤用戶喜好或選擇。
要點(diǎn) ASP 通過(guò) HTTP cookie 指派用戶 ID,cookie 是存儲(chǔ)在用戶瀏覽器中的小文件。因此,如果正在為不支持 cookie 的瀏覽器創(chuàng)建應(yīng)用程序,或者如果用戶瀏覽器設(shè)置為拒絕 cookie,則不要使用 ASP 的會(huì)話管理功能。 啟動(dòng)和結(jié)束會(huì)話
會(huì)話有四種開(kāi)始方式: 新用戶請(qǐng)求的 URL 標(biāo)識(shí)應(yīng)用程序中的 .asp 文件,并且該應(yīng)用程序的 Global.asa 文件包含 Session_OnStart 過(guò)程。 用戶保留有“Session”對(duì)象中的值。 只要服務(wù)器收到的請(qǐng)求中不包含有效的 SessionID cookie,就將自動(dòng)啟動(dòng)新會(huì)話。 用戶請(qǐng)求應(yīng)用程序中的 .asp 文件,并且應(yīng)用程序的 Global.asa 文件使用 <OBJECT> 標(biāo)記在會(huì)話間實(shí)例化對(duì)象。關(guān)于使用<OBJECT> 標(biāo)記來(lái)創(chuàng)建對(duì)象實(shí)例的詳細(xì)信息,請(qǐng)參閱使用組件和對(duì)象。
如果用戶在指定時(shí)間間隔內(nèi)沒(méi)有請(qǐng)求或刷新應(yīng)用程序中的網(wǎng)頁(yè),會(huì)話將自動(dòng)結(jié)束。默認(rèn)情況下該值為 20 分鐘。可以通過(guò)設(shè)置 Internet 信息服務(wù)管理單元“應(yīng)用程序選項(xiàng)”屬性頁(yè)中的會(huì)話超時(shí)。 該值的設(shè)置取決于 Web 應(yīng)用程序的要求以及服務(wù)器的內(nèi)存容量。例如,如果希望瀏覽 Web 應(yīng)用程序的用戶在每頁(yè)上只停留幾分鐘,則可以使會(huì)話超時(shí)值遠(yuǎn)低于默認(rèn)值。會(huì)話超時(shí)過(guò)長(zhǎng)可能導(dǎo)致打開(kāi)的會(huì)話太多,這將增加服務(wù)器內(nèi)存資源的負(fù)擔(dān)。
對(duì)于特定會(huì)話,如果要設(shè)置低于默認(rèn)應(yīng)用程序超時(shí)的超時(shí)間隔,也可以設(shè)置“Session”對(duì)象的“Timeout”屬性。例如,下面腳本設(shè)置的超時(shí)間隔為 5 分鐘。<% Session.Timeout = 5 %>
也可以使超時(shí)間隔大于默認(rèn)值,該值由“會(huì)話超時(shí)”屬性決定。
注意“Timeout”只適用于具有狀態(tài)的會(huì)話。在“無(wú)狀態(tài)會(huì)話”期間,“Session”對(duì)象不包含內(nèi)容或靜態(tài)對(duì)象。此類會(huì)話在請(qǐng)求處理完畢后自動(dòng)結(jié)束,并當(dāng)收到同一瀏覽器的下一個(gè)請(qǐng)求時(shí)重新創(chuàng)建。
另外,如確實(shí)希望結(jié)束會(huì)話,可以使用“Session”對(duì)象的 Abandon 方法。例如,可以在窗體中提供“退出”按鈕,在該窗體中對(duì)包含下列命令的 .asp 文件 URL 設(shè)置 ACTION 參數(shù)。<% Session.Abandon %>
注意 如果排隊(duì)等待執(zhí)行的用戶請(qǐng)求優(yōu)先于初始化 Session.Abandon,則這些請(qǐng)求將在所要放棄會(huì)話的環(huán)境中執(zhí)行。當(dāng) Session.Abandon 執(zhí)行完畢后,新收到的請(qǐng)求不與該會(huì)話相關(guān)聯(lián)。 關(guān)于 SessionID 和 Cookies
用戶第一次請(qǐng)求特定應(yīng)用程序內(nèi)的 .asp 文件時(shí),ASP 將生成一個(gè)“SessionID”。這是通過(guò)復(fù)雜算法產(chǎn)生的數(shù)值,SessionID 唯一標(biāo)識(shí)每個(gè)用戶的會(huì)話。新會(huì)話開(kāi)始時(shí),服務(wù)器將 Session ID 作為 cookie 存儲(chǔ)到用戶 Web 瀏覽器中。
SessionID cookie 類似于小櫥柜鑰匙,當(dāng)用戶在會(huì)話期間與應(yīng)用程序交互時(shí),ASP 可以將用戶信息儲(chǔ)存到服務(wù)器上的“小櫥柜”內(nèi)。用戶 SessionID cookie(在 HTTP 請(qǐng)求頭文件內(nèi)傳送)同意以小櫥柜鑰匙允許訪問(wèn)小櫥柜內(nèi)容的方式訪問(wèn)該。ASP 每次收到網(wǎng)頁(yè)請(qǐng)求時(shí),都檢查 HTTP 請(qǐng)求頭文件內(nèi)的 SessionID cookie。
將 SessionID cookie 存儲(chǔ)到用戶瀏覽器后,即使用戶請(qǐng)求其他 .asp 文件或請(qǐng)求在其他應(yīng)用程序中運(yùn)行的 .asp 文件,ASP 也會(huì)重復(fù)使用同一 cookie 來(lái)跟蹤會(huì)話。同樣,如果用戶主動(dòng)放棄會(huì)話或放任會(huì)話超時(shí),然后繼續(xù)請(qǐng)求其他 .asp 文件,ASP 仍舊使用同一 cookie 開(kāi)始新會(huì)話。用戶收到新 SessionID cookie 的唯一機(jī)會(huì)就是,服務(wù)器管理員重新啟動(dòng)服務(wù)器從而清除存儲(chǔ)在內(nèi)存中的 SessionID 設(shè)置,或者用戶重新啟動(dòng) Web 瀏覽器。
通過(guò)重復(fù)使用 SessionID cookie,ASP 將發(fā)送到瀏覽器的 cookie 數(shù)量減到最少。另外,如果確定 ASP 應(yīng)用程序不需要會(huì)話管理,則可以禁止 ASP 跟蹤會(huì)話和向用戶發(fā)送 SessionID cookie。
在下列情況下,ASP 將不會(huì)發(fā)送會(huì)話 cookie: 應(yīng)用程序禁用會(huì)話狀態(tài)。 ASP 頁(yè)定義為無(wú)會(huì)話,即包含<%@ EnableSessionState=False %>標(biāo)記的頁(yè)。詳細(xì)信息,請(qǐng)參閱無(wú)會(huì)話 ASP 頁(yè)。
還應(yīng)注意 SessionID cookie 并不是跟蹤用戶對(duì) Web 站點(diǎn)進(jìn)行多次訪問(wèn)的永久途徑。SessionID 信息存儲(chǔ)在服務(wù)器計(jì)算機(jī)內(nèi)存中,很容易丟失。如果要在很長(zhǎng)時(shí)間間隔內(nèi)跟蹤訪問(wèn) Web 應(yīng)用程序的用戶,必須創(chuàng)建用戶標(biāo)識(shí),方法是將特定 cookie 存儲(chǔ)到用戶 Web 瀏覽器并將 cookie 信息保存到數(shù)據(jù)庫(kù)。詳細(xì)信息,請(qǐng)參閱使用 Cookie。 存儲(chǔ)和刪除“Session”對(duì)象中的數(shù)據(jù)
“Session”對(duì)象提供動(dòng)態(tài)關(guān)聯(lián)數(shù)組,可以在數(shù)組中存儲(chǔ)信息?梢栽凇癝ession”對(duì)象中存儲(chǔ)單純變量和對(duì)象變量。
要在“Session”對(duì)象中存儲(chǔ)變量,需指定“Session”對(duì)象中已命名條目的值。例如,下面的命令將兩個(gè)新變量存儲(chǔ)到“Session”對(duì)象:<%Session("FirstName") = "Jeff"Session("LastName") = "Smith"%>
要從”Session”對(duì)象中檢索信息,訪問(wèn)已命名的條目即可。例如,要顯示 Session("FirstName") 的當(dāng)前值:歡迎<%= Session("FirstName") %>
可以將用戶首選項(xiàng)存儲(chǔ)到”Session”對(duì)象中,然后訪問(wèn)這些首選項(xiàng)以便確定返回給用戶的頁(yè)面。例如,可以允許用戶在應(yīng)用程序首頁(yè)中指定只查看純文本內(nèi)容,然后將此項(xiàng)選擇應(yīng)用于用戶在該應(yīng)用程序中訪問(wèn)的所有后續(xù)頁(yè)。<% If Session("ScreenResolution") = "Low" Then %>這是文字頁(yè)面。<% Else %>這是多媒體頁(yè)面。<% End If %>
也可以在”Session”對(duì)象中存儲(chǔ)對(duì)象例程,雖然這樣做可能影響服務(wù)器性能。詳細(xì)信息,請(qǐng)參閱設(shè)置對(duì)象作用域。
有時(shí),可能希望刪除”Session”對(duì)象中存儲(chǔ)的項(xiàng)目。例如,對(duì)于訪問(wèn)網(wǎng)上零售店的用戶來(lái)說(shuō),改變主意、放棄一系列采購(gòu)項(xiàng)目并作出全新的選擇是不常見(jiàn)的。在這種情況下,刪除不適宜的值并更新”Session”對(duì)象將會(huì)非常有用。
“Session”對(duì)象的 Contents 集合包含已存儲(chǔ)的所有會(huì)話變量(即那些沒(méi)有使用 HTML 的 <OBJECT> 標(biāo)記存儲(chǔ)的變量)。通過(guò)使用“Contents”集合中的 Remove 方法,可以有選擇地刪除為會(huì)話狀態(tài)添加的變量引用。下面腳本說(shuō)明如何使用“Remove”方法來(lái)清除”Session”對(duì)象中的項(xiàng)目(這里為用戶折扣信息):<%If Session.Contents("Purchamnt") <= 75 thenSession.Contents.Remove("Discount")End If%>
如果需要,也可以使用“Contents”集合的 RemoveAll 方法完全刪除已存儲(chǔ)的所有會(huì)話變量:Session.Content.RemoveAll()使用“Remove”方法時(shí)可以按照名稱或索引來(lái)刪除項(xiàng)目。下列腳本說(shuō)明如何循環(huán)查看”Session”對(duì)象中存儲(chǔ)的值并按照索引有條件地刪除項(xiàng)目: <%For Each intQuote in Session.ContentsIf Session.Contents(intQuote) < 200 ThenSession.Contents.Remove(intQuote)End IfNext%>管理多服務(wù)器的會(huì)話
ASP 會(huì)話信息存儲(chǔ)于 Web 服務(wù)器。瀏覽器必須請(qǐng)求同一 Web 服務(wù)器的網(wǎng)頁(yè)以便腳本訪問(wèn)會(huì)話信息。在 Web 服務(wù)器群集(由許多 Web 服務(wù)器共同響應(yīng)用戶請(qǐng)求)中,用戶請(qǐng)求不會(huì)總是路由到同一服務(wù)器。相反,專用軟件將對(duì)站點(diǎn) URL 的請(qǐng)求分發(fā)到任一空閑的服務(wù)器,該進(jìn)程稱為“平衡加載”。平衡加載使得維護(hù) Web 服務(wù)器群集上的會(huì)話信息十分困難。
要在平衡加載的站點(diǎn)上使用 ASP 會(huì)話管理,必須確保用戶會(huì)話中的所有請(qǐng)求都發(fā)送到同一 Web 服務(wù)器。一種方法是編寫(xiě) Session_OnStart 過(guò)程,該過(guò)程通過(guò)“Response”對(duì)象將瀏覽器重定向到運(yùn)行用戶會(huì)話的特定 Web 服務(wù)器。如果應(yīng)用程序頁(yè)中的鏈接都是相對(duì)鏈接,則未來(lái)請(qǐng)求都將路由到同一服務(wù)器。
例如,用戶訪問(wèn)應(yīng)用程序時(shí)可能請(qǐng)求站點(diǎn)的一般 URL:http://www.microsoft.com.加載平衡程序?qū)⒄?qǐng)求路由到指定服務(wù)器,如 server3.microsoft.com。ASP 在該服務(wù)器上創(chuàng)建新會(huì)話。在“Session_OnStart”過(guò)程中,瀏覽器將重定向到指定的服務(wù)器:<% Response.Redirect("http://server3.microsoft.com/webapps/firstpage.asp") %>
瀏覽器將請(qǐng)求指定頁(yè),只要原始 URL 中沒(méi)有引用指定的服務(wù)器名稱,所有后續(xù)請(qǐng)求都將路由到同一服務(wù)器。 使用 Cookie
cookie 是一種標(biāo)記,由 Web 服務(wù)器嵌入用戶瀏覽器中以便標(biāo)識(shí)用戶。下次同一瀏覽器請(qǐng)求網(wǎng)頁(yè)時(shí),將發(fā)送從 Web 服務(wù)器收到的 cookie。Cookie 允許一組信息與用戶相關(guān)聯(lián)。通過(guò)使用“Response”和“Request”對(duì)象中的 Cookies 集合,ASP 腳本可以獲取和設(shè)置 cookie 值。 設(shè)置 Cookie
要設(shè)置 cookie 值,可使用“Response.Cookies”。如果 cookie 尚未存在,“Response.Cookies”將新建一個(gè)。例如,要將關(guān)聯(lián)值為 ("49") 的 cookie ("VisitorID") 發(fā)送到瀏覽器,可使用下面的命令,該命令必須位于 Web 頁(yè)中的 <HTML> 標(biāo)記之前:<% Response.Cookies("VisitorID") = 49 %>
如果只希望在當(dāng)前用戶會(huì)話中使用 cookie,則將 cookie 發(fā)送到瀏覽器即可。但是,如果在用戶已經(jīng)停止并重新啟動(dòng)瀏覽器后仍需要標(biāo)識(shí)用戶,則必須強(qiáng)制瀏覽器在客戶端計(jì)算機(jī)硬盤(pán)文件中存儲(chǔ) cookie。要保存 cookie,可使用“Response.Cookies”的“Expires”屬性,并設(shè)置為將來(lái)的某個(gè)日期:<%Response.Cookies("VisitorID") = 49Response.Cookies("VisitorID").Expires = "December 31, 2001"%>
cookie 可以有多個(gè)值;這樣的 cookie 稱為“索引 cookie”。索引 cookie 值是分配的鍵值;可以設(shè)置特定的 cookie 鍵值。例如:<% Response.Cookies("VisitorID")("49") = "Travel" %>
如果現(xiàn)有的 cookie 具有鍵值,但“Response.Cookies”沒(méi)有指定鍵名,則將刪除現(xiàn)有鍵值。同樣,如果現(xiàn)有的 cookie 沒(méi)有鍵值,但“Response.Cookies”指定了鍵名和鍵值,則刪除現(xiàn)有的 cookie 值并創(chuàng)建新鍵值對(duì)。 獲取 Cookies
要獲取 cookie 值,可使用“Request.Cookies”集合。例如,如果用戶 HTTP 請(qǐng)求設(shè)置了“VisitorID=49”,則下面的語(yǔ)句將檢索值“49”:<%= Request.Cookies("VisitorID") %>
類似地,可通過(guò)鍵名來(lái)檢索索引 cookie 的鍵值。例如,如果用戶瀏覽器在 HTTP 請(qǐng)求頭文件中發(fā)送下列信息:Cookie:VisitorID=49=Travel
下列語(yǔ)句將返回值 Travel:<%= Request.Cookies("VisitorID")("49") %>設(shè)置 Cookie 路徑
ASP 在 Web 瀏覽器上存儲(chǔ)的每個(gè) cookie 都包含路徑信息。當(dāng)瀏覽器請(qǐng)求的文件的保存位置與 cookie 中指定的路徑相同時(shí),則瀏覽器自動(dòng)將 cookie 傳送給服務(wù)器。默認(rèn)情況下,cookie 路徑對(duì)應(yīng)于應(yīng)用程序的名稱,該應(yīng)用程序包含最初生成cookie 的 .asp 文件。例如,如果駐留在應(yīng)用程序“UserApplication”中的 .asp 文件生成 cookie,則用戶 Web 瀏覽器每次檢索駐留在該應(yīng)用程序中的任何文件時(shí),都將傳送該 cookie 以及包含路徑“/UserApplication”的其他所有 cookie。
要指定 cookie 的路徑(不是默認(rèn)的應(yīng)用程序路徑),可以使用 ASP“Response.Cookies”集合的“Path”屬性。例如,下面的腳本將路徑“SalesApp/Customer/Profiles/”指定給 cookie“Purchases”:<%Response.Cookies("Purchases") = "12"Response.Cookies("Purchases").Expires = "January 1, 2001"Response.Cookies("Purchases").Path = "/SalesApp/Customer/Profiles/"%>
無(wú)論何時(shí),只要包含“Purchases”cookie 的 Web 瀏覽器請(qǐng)求駐留于路徑“/SalesApp/Customer/Profiles/”或其子目錄中的文件,瀏覽器都將 cookie 傳送到服務(wù)器。
許多 Web 瀏覽器,包括 Microsoft Internet Explorer 4.0 或更新版本以及 Netscape 瀏覽器,都保留 cookie 路徑的大小寫(xiě)。這意味著,如果請(qǐng)求的文件路徑與存儲(chǔ)的 cookie 路徑大小寫(xiě)不一致,則瀏覽器不會(huì)將 cookie 發(fā)送到服務(wù)器。例如,對(duì) ASP 來(lái)說(shuō),虛擬目錄 /TRAVEL 和 /travel 是相同的 ASP 應(yīng)用程序;但對(duì)保留 URL 大小寫(xiě)的瀏覽器來(lái)說(shuō),/TRAVEL 和 /travel 是兩個(gè)不同的應(yīng)用程序。確認(rèn)所有 .asp 文件的 URL 都具有相同的大小寫(xiě)以便確保用戶瀏覽器傳送已存儲(chǔ)的 cookie。
可以使用下面的語(yǔ)句來(lái)設(shè)置 cookie 路徑,這樣無(wú)論何時(shí),只要瀏覽器請(qǐng)求服務(wù)器中的文件,用戶 Web 瀏覽器都將傳送 cookie,而不考慮應(yīng)用程序或路徑:Response.Cookies("Purchases").Path = "/"
不過(guò)要注意,如果將 cookie 傳送到服務(wù)器但不區(qū)分應(yīng)用程序,并且 cookie 包含不應(yīng)從特定應(yīng)用程序外部訪問(wèn)的敏感信息時(shí),可能導(dǎo)致潛在的安全問(wèn)題。 保留狀態(tài)(無(wú) Cookies)
并非所有瀏覽器都支持 cookie。即使對(duì)于支持 cookie 的瀏覽器,某些用戶也可以關(guān)閉 cookie 支持。如果應(yīng)用程序需要響應(yīng)不支持 cookies 瀏覽器,則不能使用 ASP 會(huì)話管理。
這種情況下,必須編寫(xiě)自己的機(jī)制以便在應(yīng)用程序的頁(yè)之間傳遞信息。有兩種常用方法可以用于此目的: 在 URL 查詢字符串中添加參數(shù)。例如: http://MyServer/MyApp/start.asp?name=Jeff
不過(guò)對(duì)于某些瀏覽器,如果通過(guò) GET 方法提交窗體,則可能丟棄查詢字符串傳遞的任何顯式參數(shù)。 在窗體中添加隱藏值。例如,下面的 HTML 窗體包含隱藏控件,該控件不會(huì)顯示在實(shí)際窗體中,并且在用戶 Web 瀏覽器中不可見(jiàn)。該窗體通過(guò) HTTP POST 方法傳遞用戶標(biāo)識(shí)值以及用戶提供的信息。 <FORM METHOD="POST" ACTION="/scripts/inform.asp"><INPUT TYPE="text" NAME="city" VALUE=""><INPUT TYPE="text" NAME="country" VALUE =""><INPUT TYPE="hidden" NAME="userid" VALUE= <%= UserIDNum(i) %><INPUT TYPE="submit" VALUE="Enter">
該方法要求將所有傳遞用戶信息的鏈接目標(biāo)都編碼為 HTML 窗體。
如果不使用 ASP 會(huì)話管理,則應(yīng)關(guān)閉對(duì)應(yīng)用程序的會(huì)話支持。啟用會(huì)話時(shí),ASP 將向請(qǐng)求網(wǎng)頁(yè)的所有瀏覽器發(fā)送 SessionID cookie。要關(guān)閉會(huì)話支持,可清除 Internet 信息服務(wù)管理單元“應(yīng)用程序選項(xiàng)”屬性頁(yè)上的“啟用會(huì)話狀態(tài)”復(fù)選框。 無(wú)會(huì)話 ASP 頁(yè)
通過(guò) ASP,也可以創(chuàng)建無(wú)會(huì)話頁(yè),該頁(yè)可用來(lái)推遲創(chuàng)建會(huì)話跟蹤,直到需要時(shí)為止。
無(wú)會(huì)話頁(yè)將“不”執(zhí)行下列任務(wù): 執(zhí)行“Session_OnStart”過(guò)程。 發(fā)送 session ID cookie。 創(chuàng)建”Session”對(duì)象。 訪問(wèn)由 <OBJECT> 標(biāo)記創(chuàng)建的嵌入式”Session”對(duì)象或會(huì)話范圍對(duì)象。 (與其他會(huì)話請(qǐng)求一起)系列化執(zhí)行。
要配置無(wú)會(huì)話的 .asp 文件,可使用:<%@ EnableSessionState=False %>
應(yīng)將該腳本置于 .asp 文件第一行,在其他任何腳本之前。默認(rèn)情況下,如果省略該標(biāo)記,則啟用會(huì)話跟蹤。
無(wú)會(huì)話 ASP 頁(yè)可消除潛在的耗時(shí)會(huì)話活動(dòng),從而增強(qiáng)服務(wù)器的應(yīng)答能力。例如,對(duì)于包含兩個(gè) HTML 框架的 ASP 頁(yè):frames 1 和 2,它們都位于同一頁(yè)面組。Frame 1 包含用來(lái)執(zhí)行復(fù)雜腳本的 .asp 文件,而 frame 2 包含簡(jiǎn)單的 .asp 文件。因?yàn)?ASP 按先后順序或“系列化”執(zhí)行會(huì)話請(qǐng)求,所以無(wú)法在 frame 1 中的腳本執(zhí)行完畢之前查看 frame 2 的內(nèi)容。然而,如果將 frame 1 中的 .asp 文件設(shè)置為無(wú)會(huì)話,則 ASP 請(qǐng)求不再系列化,瀏覽器將在 frame 1 內(nèi)容執(zhí)行完畢前處理 frame 2 的內(nèi)容。
不過(guò),如何處理對(duì)不同框架的多個(gè)請(qǐng)求完全取決于用戶 Web 瀏覽器的配置。某些 Web 瀏覽器可能系列化請(qǐng)求,而忽略 .asp 文件的無(wú)會(huì)話配置。