Controller類型的緩存
為了避免頻繁地遍歷所有程序集對目標Controller類型進行解析ASPNET MVC對解析出來的Controller類型進行了緩存以提升性能與針對用於Area注冊的AreaRegistration類型的緩存類似Controller激活系統同樣采用基於文件的緩存策略用於保存Controller類型列表的名為MVCControllerTypeCachexml的文件保存在ASPNET的臨時目錄下面具體的路徑如下
%Windir%\MicrosoftNET\Framework\v{version}\TemporaryASPNET Files\{appname}\…\…\UserCache\
%Windir%\MicrosoftNET\Framework\v{version}\Temporary ASPNET
Files\root\…\…\UserCache\
其中第一個針對寄宿於IIS中的Web應用後者針對直接通過Visual Studio Developer Server作為宿主的應用而用於保存所有AreaRegistration類型列表的MVCAreaRegistrationTypeCache xml文件也保存在這個目錄下面
當接收到Web應用被啟動後的第一個請求時Controller激活系統會讀取這個用於緩存所有Controller類型列表的ControllerTypeCachexml文件並反序列化成一個List<Type>對象只有在該列表為空的時候才會通過遍歷程序集和反射的方式得到所有實現了接口IController的類型而被解析出來的Controller類型重新被寫入這個緩存文件中這個通過讀取緩存文件或者重新解析出來的Controller類型列表被保存到內存中在Web應用活動期間內被Controller激活系統使用
下面的XML片段反映了這個用於Controller類型列表緩存的MVCControllerTypeCache xml文件的結構從中可以看出它包含了所有的Controller類型的全名和所在的程序集和托管模塊的名稱
<?xml version= encoding=utf?>
<!This file is automatically generated Please do not modify the contents of this file>
<typeCache lastModified=// :: PM
mvcVersionId=badbedccfcd>
<assembly name=ArtechAdmin Version= Culture=neutral
PublicKeyToken=null>
<module versionId=ebefdaafbdceeed>
<type>ArtechAdminHomeController</type>
<type>ArtechAdminEmployeeController </type>
</module>
</assembly>
<assembly name=ArtechPortal Version= Culture=neutral
PublicKeyToken=null>
<module versionId= FEEFAAEEBDC>
<type>ArtechPortalControllersHomeController</type>
<type>ArtechPortalProductsController</type>
</module>
</assembly>
</typeCache>
返回目錄ASPNET MVC 框架揭秘
編輯推薦
ASP NET開發培訓視頻教程
Microsoft NET框架程序設計視頻教程
Java程序性能優化讓你的Java程序更快更穩定
Visual C++音頻/視頻技術開發與實戰
From:http://tw.wingwit.com/Article/program/net/201311/16081.html