Asp.net

asp.net 中的 ViewState 分塊

  • September 10, 2012

我不斷聽到“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=" /> 

希望對你有幫助!

引用自:https://stackoverflow.com/questions/10413986