
文章插圖
最近在寫Webform頁(yè)面程序發(fā)現(xiàn)這樣一個(gè)現(xiàn)象:在做導(dǎo)出功能時(shí) , 由于導(dǎo)出數(shù)據(jù)的處理時(shí)間比較長(zhǎng) , 就在客戶端加一個(gè)定時(shí)器通過(guò)ajax不間斷查詢導(dǎo)出進(jìn)度 。然后發(fā)現(xiàn)了一個(gè)情況 , 這個(gè)請(qǐng)求一直是阻塞的狀態(tài) , 直到導(dǎo)出事件處理完成之后 。才去執(zhí)行這個(gè)請(qǐng)求 , 也就是說(shuō)如果響應(yīng)時(shí)間長(zhǎng)的請(qǐng)求還在進(jìn)行中 , 短的請(qǐng)求卻被掛起了 。
百度了下 , 最終確定是Asp.Net Session造成的 。原文:https://www.cnblogs.com/littlewrong/p/4783104.html
原理:Session實(shí)現(xiàn)了Reader/Writer的鎖機(jī)制:
當(dāng)頁(yè)面對(duì)Session具有可寫功能(即頁(yè)面有<%@Page EnableSessionState=”True” %>標(biāo)記) , 此時(shí)直到請(qǐng)求完成該頁(yè)面的Session持有一個(gè)寫鎖定 。
當(dāng)頁(yè)面對(duì)Session具有只讀功能(即頁(yè)面有<%@Page EnableSessionState=”ReadOnly” %>標(biāo)記) , 此時(shí)知道請(qǐng)求完成該頁(yè)面的Session持有一個(gè)讀鎖定 。
讀鎖定將阻塞一個(gè)寫鎖定;讀鎖定不會(huì)阻塞讀鎖定;寫鎖定將阻塞所有的讀寫鎖定 。這就是為什么兩個(gè)框架中的同一個(gè)頁(yè)面都去寫同一個(gè)Session時(shí) , 其中一個(gè)要等待另一個(gè)(稍快的那個(gè))完成后 , 才開(kāi)始寫 。
“寫鎖定將阻塞所有的讀寫鎖定” , 也就是說(shuō)頁(yè)面在EnableSessionState=”True”的情況下沒(méi)返回輸出時(shí) , 一直持著Session寫操作 , 其他頁(yè)面對(duì)Session的讀操作必須等待 , 而asp.net的aspx頁(yè)面默認(rèn)是EnableSessionState=”True” , 每個(gè)頁(yè)面從請(qǐng)求開(kāi)始至返回一直持著Session寫操作 , 需驗(yàn)證頁(yè)面必須讀取Session值判斷 , 這就是為什么需驗(yàn)證的頁(yè)面請(qǐng)求被阻塞的原因 。只要耗時(shí)頁(yè)面(A頁(yè)面)沒(méi)有Session的寫操作 , 也就不會(huì)阻塞其他頁(yè)面的請(qǐng)求 , 于是修改A頁(yè)面的EnableSessionState=”ReadOnly” , 例如:<%@ Page Language=”C#” AutoEventWireup=”true”CodeFile=”TBS_Monitor_List.aspx.cs”EnableSessionState=”ReadOnly” Inherits=”TBS_Monitor_List” %> , 問(wèn)題解決 。
結(jié)論:也就是說(shuō) , 在無(wú)需對(duì)session進(jìn)行寫操作的頁(yè)面 , 在Page指令加上EnableSessionState=”ReadOnly”屬性 , 就不會(huì)造成Request阻塞的情況了 。
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問(wèn)題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專業(yè)人士給予相關(guān)指導(dǎo)!
「愛(ài)刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助:- 快遞停滯投訴快速解決辦法 快遞停滯幾天可以投訴
- tomcat網(wǎng)頁(yè)404錯(cuò)誤解決 tomcat啟動(dòng)404錯(cuò)誤
- 暈車有什么方法能解決 暈車的解決方法
- mac電池檢測(cè)燈不亮解決方案 mac電池檢測(cè)燈不亮
- 電腦藍(lán)屏,有大神知道是什么問(wèn)題嗎,這是什么故障又如何解決?
- U盤插到電腦上不顯示該如何處理?電腦讀不出u盤解決方法
- 為什么電腦開(kāi)機(jī)內(nèi)存就占用2000多M,怎么樣快速解決
- office2007錯(cuò)誤1935解決辦法 office安裝錯(cuò)誤1935怎么辦
- office2010提示安裝出錯(cuò)的解決方法 office2010安裝出錯(cuò)是怎么回事
- centos安裝圖形界面后無(wú)法進(jìn)入解決方案 centos安裝圖形界面后無(wú)法進(jìn)入
