Asp.net
asp.net 中的 ViewState 分塊
我不斷聽到“Viewstate Chunking”這個詞。什麼是 Viewstate 分塊?
以及它是如何為 ASP.NET 頁面工作的?
當頁面中的 ViewState 變得非常大時,可能會出現問題,因為某些防火牆和代理會阻止訪問包含巨大 ViewState 大小的頁面。為此,ASP.NET 引入了 ViewState Chunking 機制。因此,ASP.NET 可以使用 web.config 部分中的 MaxPageStateFieldLength 屬性將 ViewState 的單個隱藏欄位拆分為多個。
當 MaxPageStateFieldLength 屬性設置為正數時,發送到客戶端瀏覽器的視圖狀態被分成多個隱藏欄位。
將 MaxPageStateFieldLength 屬性設置為負數(預設值)表示不應將視圖狀態欄位分成塊。將 MaxPageStateFieldLength 設置為較小的數字可能會導致性能下降。
之前的範例 ViewState:
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"value="/wEPDwUKLTk2Njk3OTQxNg9kFgICAw9kFgICCQ88KwANAGQYAQUJR3Jp ZFZpZXcxD2dk4sjERFfnDXV/hMFGAL10HQUnZbk=" />然後在 web.config 中設置:
<pages maxPageStateFieldLength="40">範例 ViewState 之後:
<input type="hidden" name="__VIEWSTATEFIELDCOUNT" id="__VIEWSTATEFIELDCOUNT"value="3" /> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTk2Njk3OTQxNg9kFgICAw9kFgICCQ88" /> <input type="hidden" name="__VIEWSTATE1" id="__VIEWSTATE1" value="KwANAGQYAQUJR3JpZFZpZXcxD2dk4sjERFfnDXV/" /> <input type="hidden" name="__VIEWSTATE2" id="__VIEWSTATE2" value="hMFGAL10HQUnZbk=" />希望對你有幫助!