2010-09-25 42 views
1

我有兩個不同的類,我正在測試發送文件到瀏覽器。 第一個是在http://pastebin.org/1187259使用範圍特定的標題,以提供恢復asp.net c#發送二進制文件到客戶端速度問題

第二個是在http://pastebin.org/1187454使用塊讀取發送大文件。
兩者都可以正常工作。在下載速度方面,第一個比第二個慢。第一個我不能超過80KB /秒,第二個我可以儘可能快地獲得。

我做了很少的測試,結果是一樣的。這是一種錯覺還是第一個有什麼減慢下載速度?

我還注意到,第一個似乎阻止其他請求。例如,如果我從服務器請求一個文件與第一個服務器將不會響應我的其他請求,直到下載完成。即使我請求不同的頁面。如果我從不同的瀏覽器打開不同的會話,它不會這樣做。

謝謝。

回答

1

最後!我設法通過將EnableSessionState =「ReadOnly」添加到下載頁面來解決此問題。

http://www.guidanceshare.com/wiki/ASP.NET_2.0_Performance_Guidelines_-_Session_State

「使用只讀屬性時,你可以

對於那些只需要讀取訪問會話數據,考慮的EnableSessionState設置爲只讀網頁。

爲什麼

頁面請求使用會話狀態的內部使用ReaderWriterLock對象來管理會話數據,這允許在不鎖定的情況下同時發生多個讀取操作。 ock更新會話狀態,所有讀取請求都被阻止。通常每次請求都會對數據庫進行兩次調用。第一個調用連接到數據庫,將會話標記爲鎖定,並執行該頁面。第二次調用寫入任何更改並解鎖會話。通過將EnableSessionState設置爲ReadOnly,可以避免阻塞,並可以減少對數據庫的調用,從而提高性能。 「