我的站點中的所有圖像都由控制器操作提供服務。這個動作檢查圖像是否存在於磁盤上,並可以進行一些操作(調整大小等)。這是在ASP.NET MVC中使用異步控制器的好選擇
考慮到一個頁面可能包含50個左右的圖像,導致50個請求,這是使用ASP.NET MVC Async控制器的一個很好的選擇嗎?
我的站點中的所有圖像都由控制器操作提供服務。這個動作檢查圖像是否存在於磁盤上,並可以進行一些操作(調整大小等)。這是在ASP.NET MVC中使用異步控制器的好選擇
考慮到一個頁面可能包含50個左右的圖像,導致50個請求,這是使用ASP.NET MVC Async控制器的一個很好的選擇嗎?
您應先閱讀measure-the-performace-of-async-controllers。
從文章
異步請求是有用的,但只有如果你需要比你的工作線程來處理更多併發請求。否則,同步請求會更好,因爲它們允許您編寫更簡單的代碼。
(有一個例外:ASP.NET動態調整工作線程池的最小和最大大小限制,並且如果流量突然激增,它可能需要幾分鐘才能注意到並創建新的工作線程。在此期間,您的應用程序可能只有少數工作線程,並且很多請求可能會超時。我在30分鐘內逐漸調整流量級別的原因是爲ASP.NET提供了足夠的時間進行調整。而不是處理突發流量峯值的同步請求,儘管實際上這種峯值並不經常發生。)
即使您使用異步請求,您的容量也會受到所依賴的任何外部服務容量的限制。顯然,真的,但直到你測量它,你可能不知道如何配置這些外部服務。
它不顯示在圖表上,但如果你有請求進入ASP.NET的隊列,那麼隊列延遲影響所有請求 - 包括昂貴的I/O不只是那些。這意味着整個網站對所有用戶來說感覺都很慢。在正確的情況下,異步請求可以通過不強制其他請求排隊這麼多來避免整個站點的減速。