簡體   English   中英

緩存和ASP.NET

[英]Caching and ASP.NET

我有一個與ASP.NET的工作方式更相關的問題,將盡我所能解釋。

我的應用程序中有一個四層體系結構

  1. Web(ASP.NET Web應用程序)
  2. 商業(類庫)
  3. 通用CRUD層**(類庫)
  4. 數據(類庫)

我的這個通用CRUD層使用反射來設置和讀取對象的屬性,但是我已經讀到,使用PropertyInfo相當昂貴,因此想緩存這些項目。

這是場景:

有兩個人訪問該站點,因此稱他們為Fred和Jim。 弗雷德創建了一個客戶,該客戶又稱為通用CRUD層,並將客戶類的屬性信息緩存在System.RuntimeCache中。 吉姆,然后在幾秒鍾后還創建了一個客戶。

我的問題是,弗雷德(Fred)和吉姆(Jim)的兩個請求是否會導致兩次獲取屬性信息? 還是ASP.NET會第二次從緩存中檢索它,例如,通過緩存獲取屬性信息,Jim的請求會更快?

我的想法是,因為我的CRUD是一個類庫,並且無法訪問System.Web.Cache,所以屬性信息是否不會在所有會話/用戶之間進行緩存?

不,它將為每個請求發出新查詢(除非您另有編碼)。

ASP.Net應用程序中可能會發生多層緩存(瀏覽器,代理,服務器端響應緩存,中間對象緩存,DA層緩存),所有這些都可以配置/使用。 但是,除非有人專門編寫代碼/規則/配置,否則任何內容都不會緩存在ASP.Net(或任何應用程序)中。

正如Alexei Levenkov指出的那樣,您必須配置緩存以顯式進行:您不會獲得對特定屬性值的自動緩存。

但是,我要指出的是,盡管與編寫直接訪問屬性的代碼相比,使用PropertyInfo昂貴,但與數據庫往返的成本或服務器與最終用戶之間的延遲相比,它顯得蒼白無力。 諸如Entity Framework,WebForms和MVC之類的工具都大量使用了反射,因為它所產生的性能成本完全值得減少維護成本。

避免過早優化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM