簡體   English   中英

ASP.NET緩存與會話變量?

[英]ASP.NET Caching with Session variable?

我有某種社區網站,數據庫中有大約40.000個用戶,其中包含許多屬性列。 根據某種條件,有兩個頁面顯示最新用戶和在線用戶。 性別。

我做了一些SQL技巧,使每頁僅獲得十行,因此sql服務器發回的搜索,收件箱等信息不多。以及其他基於用戶的數據,但在線和最新用戶對於我網站的所有用戶都是全局的因此,我可以為這些使用某種緩存。 問題是我在登錄時在會話集中使用了一些用戶變量,因此,如果我使用默認輸出緩存,會話將與其他用戶交換。

您將如何解決這個問題? 我知道的方法很少,但是這里的一些人有很多經驗,所以我等待您的輸入。 我認為這對於任何使用過很多用戶或使用過很多應用程序的人來說都是一個普遍的問題。 也許StackOverflow的船員???

干杯

您說,您不能使用輸出緩存,因為您正在使用用戶特定的數據來生成輸出。 但是,您也可以以編程方式使用緩存,以將要訪問的對象存儲在文件(HttpContext.Cache)后面的代碼中

因此,您可以在文件后面的代碼中編寫如下代碼(偽代碼):

var cacheableUserData = (UserData)Cache("UserData");
if (cacheableUserData== null)
{
    cacheableUserData= GetDataFromDB();
    Cache.Add("UserData", cacheableUserData); // Set cache expiration here
}
var dataToPresent = CombineData(userData, loggedInUserData);

然后,您不是在緩存輸出,而是用於生成輸出的部分數據。

為什么不使用HttpContext.Items屬性將其存儲在其中,以便將其全局存儲而不是本地存儲(即HttpContext.Session)?

暫無
暫無

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

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