簡體   English   中英

在Asp.net會話中存儲大量數據

[英]Storing large amounts of data in the Asp.net session

我正在編寫一個C#/ asp.net頁面,當前正在頁面加載時從數據庫中拉出大量數據(例如100000 Datetime int對),但是每次頁面加載都加載相同的數據似乎有點愚蠢。 我已經考慮過在會話中存儲此值,但是多個瀏覽器選項卡似乎引起了問題。

有沒有更好的方法來存儲這些值,並且如果我需要支持多個瀏覽器選項卡,是否使用適當的會話?

您的會話占用了大量服務器內存。 您可以將會話存儲在數據庫中(這違背了目的,因為這是您首先要將它們存儲在會話中的原因),但是在行之間進行讀取(為什么每個訪問者都需要100,000個唯一的日期時間對?)我認為您應該真正考慮將這些值存儲在緩存中(如果所有用戶的值都相同)。

在會話中存儲100k個int對的問題在於它可能適用於1個或2個,甚至可能有十幾個用戶。 但是,當您的網站開始流行時,它根本無法擴展。 您的服務器將無法存儲500,000個用戶會話,每個會話分別具有10萬個整數對。 您很快就會用完內存

如果每個用戶該數據都是唯一的,則會話可能是緩存數據的有效位置。 但是,如果執行此操作,則應注意添加到會話中的內容將保留在那里,需要將其刪除。 另外,由於每個用戶會話存儲大量數據,因此會消耗大量服務器內存。 這就是Steve在回答問題時所要解決的問題-您很容易發現自己的空間不足,因為多個用戶擁有大量會話數據

如果每個用戶的數據不變,那么緩存就是答案!

會議可能變得笨拙。 您可能需要考慮使用母版頁來包裝頁面。然后可以將數據加載到母版中一次,並在整個頁面上保持可用狀態,或者將其放置在頁面上的隱藏對象(如文字)中,以便能夠訪問。

為什么需要頁面之間的所有配對?

關於使用緩存代替會話變量該怎么辦: http : //msdn.microsoft.com/zh-cn/library/aa478965.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM