国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET通過分布式Session提升性能

2024-07-10 13:24:15
字體:
來源:轉載
供稿:網友

如果我們正在使用Session,那么構建高性能可擴展的ASP.NET網站,就必須解決分布式Session的架構,因為單服務器的 SESSION處理能力會很快出現性能瓶頸,這類問題也被稱之為Session同步。微軟有自己的分布式Session的解決方案,那就是 SessionStateServer,我們可以參考:

ASP.NET Session State Partitioning 
 

ASP.NET load balancing and ASP.NET state server 
(aspnet_state).aspx 

不過本文是要換一個方案,那就是使用Memcached來到達分布式SESSION的架構。Memcached作為分布式的緩存服務器已經被廣泛應用在網站建設中。

 

一:Session的機制

Session是針對用戶的,我們也可以理解為是針對瀏覽器的。在瀏覽器首次訪問ASP.NET網頁的時候(網頁沒有關閉session功能),它會發送如下的HTTP頭給客戶端:

ASP.NET通過分布式Session提升性能

瀏覽器和服務器間就是通過這樣一種機制來確保用戶SESSION的。

如果客戶端瀏覽器禁用了Cookie會怎么樣,我們會發現每一次刷新瀏覽器Set-Cookie都是不同的,而發送請求頭中也永遠不會出現 Cookie標識。這個時候,我們會發現Session失效了(當然,微軟為了防止出現這種情況,允許我們在sessionState中設置 cookieless="true",用URL來傳遞sessionid)。

二:Memcached Providers

我使用的Memcached客戶端是Memcached Providers,下載完畢后,你會發現Memcached Providers已經提供了對分布式Session的支持功能。如果你還不會使用Memcached Providers,請參考此文Memcached Tip 1:使用Memcached Providers。Memcached Providers提供的示例是直接將SESSION存儲在數據庫,我們可以通過配置來將SESSION支持存儲在分布式SESSION的內存中,即,將下文中的dbType由SQL修改為none。:

ASP.NET通過分布式Session提升性能

tblSessions保存的是就是單獨的Session,如下:

 

四:Memcached Providers的一個BUG

在當前的Memcached Providers(1.2版本)中關于SessionStateProvider(29520-TRUNK)是有一個BUG(我已提交到 codeplex,相信他們的下一個版本應該能得到修正)的。如果我們測試SESSION失效時間,發現只要經過一次刷新后,就永遠是20分鐘(即默認)。這源于在ReleaseItemExclusive這個重載方法中(該方法用于釋放對會話數據存儲區中項的鎖定),對于Session的重新存儲沒有加上過期時間,如下:

ASP.NET通過分布式Session提升性能mysql、mongodb、任何自定義的KEY-VALUE框架等等,此為后話,暫且不表。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 惠来县| SHOW| 新乐市| 乐山市| 清水县| 牟定县| 保山市| 绥宁县| 东丰县| 巴中市| 平昌县| 黎城县| 巴彦淖尔市| 微山县| 罗江县| 江口县| 靖江市| 广元市| 肇东市| 客服| 宁津县| 拜城县| 静海县| 宜昌市| 高邑县| 团风县| 晋江市| 鲁甸县| 社会| 壶关县| 吐鲁番市| 南汇区| 平顺县| 赣州市| 高安市| 石河子市| 灌阳县| 塔城市| 常州市| 涟水县| 湖州市|