2013-02-20 71 views
3

我將從複雜的object填充DataTable和其他controlsASP.net中的會話變量是否有限制?

  1. 我應該在哪裏存放這樣的object
  2. 會話變量開始影響頁面性能的大小是多少?
+0

需要多長時間保存數據?是否有多個回發? – 2013-02-20 01:19:05

+0

你有很多這些複雜的對象(每個會話更多)?或者也許只有一個複雜的對象可以在整個應用程序中使用? – Blachshma 2013-02-20 01:19:20

+0

有不同的頁面,每個頁面依賴於一個這樣的對象 – DarknessBeginsHere 2013-02-20 01:20:27

回答

0
  1. 如果它是每個會話對象,會話字典存儲它
  2. 如果您正在使用的進程內會話存儲合理 地方,物體的大小決不會影響頁面的性能(在直到所有數據導致進程交換爲止)。其他會話商店可能會產生輕微的影響,具體取決於移動數據所需的時間。 SQL到本地進程。這會很快,直到你的對象變得非常大。
3

Session對象中的數據存儲在服務器的內存中。因此,存儲限制是服務器可用的內存。這些數據不會在任何階段發送給客戶,除非您明確這樣做。一旦您爲Session對象分配了任何值,MVC代碼就會向客戶端瀏覽器發送一個cookie。然後使用此cookie的值來唯一標識會話。

所以......

  1. Session對象是專門設計,讓您可以在服務器上存儲的特定會話的數據,所以是一個合適的地方讓你把特定會話的數據結構,像你描述。
  2. 因爲Session對象僅在服務器端,所以使用Session來存儲跨多個頁面刷新不變的計算量大的操作的結果將加速頁面加載,因爲您可以使用先前的結果而不必再次創建它。除非你吹掉服務器上的內存限制,否則你不會看到任何性能下降。
+1

-1:會話狀態不一定存儲在服務器的內存中。它可以存儲在SQL Server或其他持久性存儲中。 – 2013-02-20 01:34:05

+0

@JohnSaunders,是不是SQL Server也存儲在服務器的某個地方?換句話說,它不是客戶端解決方案 – usefulBee 2017-11-13 15:35:44

+1

@usefulBee它可能是與Web服務器不同的服務器。 – 2017-11-13 18:20:11