2012-04-03 33 views
3

我已經開始着手在客戶端網站上重新編寫一些頁面,我可以看到,例如只要有人登錄,就有53會話變量設置。在整個網站中使用會話

對我來說,這似乎很瘋狂,只要您登錄,然後在整個網站中設置所有內容,請參閱這些會話或添加新的會話。

很多時候他們的網站會收到錯誤,因爲許多會話中的一個已經失去了價值。

所以我的問題是什麼是重做這些頁面的最佳方式。

  1. 繼續使用這麼多的會話是一個好主意嗎?
  2. 使用會話有更好的選擇嗎?
  3. 網站上的所有頁面都需要一些變量,所以最好從每個頁面上的數據庫中檢索這些變量,或者在會話中設置這些變量?

我認爲,應該只有一個會話需要的,那就是用戶名/ USER-ID和其他一切應該從數據庫中被抓住並在需要時。

在此先感謝

+1

您是指每個用戶的會話值或多個會話? – jrummell 2012-04-03 12:41:57

+0

對不起,應該說這是會話變量 - 現在編輯它 – 2012-04-03 14:33:28

回答

3

一般來說不是一個好主意,但是這取決於在那裏存儲什麼類型的數據。如果它是一串字符串和整數值,它可能不是太多問題,但如果它們在會話中存儲健壯對象和/或大量數據集,我肯定會考慮重構它。

作爲一個經驗法則,我儘量避免將會話用於除用戶相關數據以外的任何其他用途。除此之外,使用會話可能會很誘人,但有一個好的設計和實現是你不需要的。

這裏有一對夫婦在哪裏存放東西的指導原則:

  • 對於數據是用戶特定的,在整個應用程序頻繁訪問,利用會議,以減少旅行數據庫

  • 對於或多或少是靜態的,而不是依賴於或與用戶,利用高速緩存或應用程序的狀態,以減少旅行數據庫

  • 對於數據是特定頁的數據,利用ViewState和/或隱藏字段。但是,不要使用ViewState的存儲大對象或數據集

  • 對於被認爲是安全的用戶可以看到,可以考慮使用查詢字符串從頁面信息傳遞到頁面

以上原則數據通常會引導你朝着正確的方向發展,但任何事情都有例外。只要想一想你存儲數據的位置,以及你爲什麼在那裏存儲數據,你應該沒問題。

+0

感謝您的解釋,我會嘗試和重新做網站時使用你的一些建議 – 2012-04-04 12:07:30

0

首先,我很懷疑你有每個用戶的多個會話,這將意味着你指的會話變量。其次,這一切都取決於你的目標,但是,如果你有這麼多變量,也許你應該使用數據庫來存儲它們,並在必要時進行檢索。對於任何網站來說,53個會話變量肯定是太多了。

+0

是的,我指的是會話變量抱歉 - 如果你認爲53太多,我剛剛找到一個頁面設置123會話:O – 2012-04-04 12:08:27

0

這取決於你的情況,但我會檢查並證明爲什麼你需要每個53個會話變量。雖然這並非前所未有的,但您必須考慮會話存儲的RAM容量,因爲它可能會影響您的站點可支持的併發用戶數量。

你可以像@walther所建議的那樣做,但是我想再說一次,因爲把它們放在數據庫中將交易內存中用於(網絡)數據庫調用的Session操作。也許一些價值觀真的是全球性的,而不是特定於會議?在這種情況下,您可以將它們移動到Cache對象。

基本上,檢查它們的用法並拿出適當的存儲範圍。如果這是必要的,可以將它們留在Session中,但您需要了解影響和影響。