為什麼要預編Razor View?
通常如果要查詢mvc render的速度增快,view這邊會建議將WebForm的ViewEngine拿掉,
只保留Razor View Engine,還有如果是c#的話,也移除掉.vbhtml,只保留cshtml
最後則是先預編razor view上去正式環境。
故事是這樣子的, 我們有個app是直接嵌入網站的畫面做為使用。
每次在demo的時候,第一次進去真的滿慢。
研究後將暫存的編譯目錄移出才發現, Razor view編譯是整個目錄的
所以那一個view的目錄會被parse, 然後每個view都變成一個.cs 最後成一個dll
然而Layout所在的目錄一樣會被parse然後也變成一個dll
算一算發現那一個功能進入點,第一次request時會有3x個view parse並編譯。
加上那頁很肥, view有10000行, 用razor跟那個大model綁定的欄位很多。
所以真的會滿慢, 看起來一定得先預編view上去到環境會比較好。
整理一下View的動作
1. view所在的目錄裡cshtml會先parse成一個個.cs
2.同個目錄view產出的cs, 會編譯成一個dll
3.執行時, @html跟model綁定的欄位會有一些處理(效能耗損的地方, 這裡有cache機制)
有興趣的話, 可以在Web.config 設置tempDirectory到別處目錄。看看第一次response後目錄的變化
<compilation tempDirectory="">