我剛剛發(fā)現(xiàn)了所有ASP.NET網(wǎng)站速度慢的原因,我正在想辦法解決這個問題。我剛剛發(fā)現(xiàn)ASP.NETWeb應(yīng)用程序中的每個請求在請求開始時都會獲得一個會話鎖,然后在請求結(jié)束時釋放它!如果你失去了這方面的影響,就像最初對我一樣,這基本上意味著以下幾點(diǎn):任何時候,ASP.NET網(wǎng)頁都需要很長時間來加載(可能是由于數(shù)據(jù)庫調(diào)用緩慢或其他原因),用戶決定要導(dǎo)航到另一個頁面,因?yàn)樗麄儏捑肓说却麄儾荒?!ASP.NET會話鎖強(qiáng)制新頁請求等待,直到原始請求完成其緩慢的加載。阿羅。當(dāng)UpdatePanel加載緩慢時,用戶決定在UpdatePanel完成更新之前導(dǎo)航到另一個頁面.他們不能!ASP.NET會話鎖強(qiáng)制新的頁請求等待,直到原始請求完成其痛苦的緩慢加載。雙重阿羅!那么有什么選擇呢?到目前為止,我已經(jīng)想出:實(shí)現(xiàn)ASP.NET支持的自定義SessionStateDataStore。我還沒有找到太多可以復(fù)制的東西,而且似乎風(fēng)險(xiǎn)很高,而且很容易搞砸。跟蹤所有正在進(jìn)行的請求,如果來自同一用戶的請求來自同一個用戶,則取消原始請求??雌饋碛悬c(diǎn)極端,但它會起作用的(我想)。不要用會話!當(dāng)我需要用戶某種狀態(tài)時,我可以使用Cache代替,以及通過身份驗(yàn)證的用戶名上的關(guān)鍵項(xiàng),或者其他類似的東西。又有點(diǎn)極端了。我真不敢相信ASP.NETMicrosoft團(tuán)隊(duì)會在4.0版的框架中留下如此巨大的性能瓶頸!我漏掉了什么明顯的東西嗎?在會話中使用線程安全集合有多難?
3 回答

阿波羅的戰(zhàn)車
TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個贊
<% @Page EnableSessionState="ReadOnly" %>
<% @Page EnableSessionState="False" %>
<sessionState mode="Off" />
- 3 回答
- 0 關(guān)注
- 1258 瀏覽
添加回答
舉報(bào)
0/150
提交
取消