2011-11-01 54 views
1

我從我的用戶表中做COUNT(userid)並在網站上顯示數字,但我想知道是否有任何其他更好的方式來獲取,存儲和顯示此信息,而不是從一個連接和COUNT()每次訪客加載網頁時都要加上數據庫?從數據庫中顯示用戶數量的最快方法?

編輯: 我剛剛發現約在MSDN緩存的信息,這似乎是這樣做的absolutle最好的方式,感謝TomTom公司!

ASP.NET Caching .NET 4.0

如果我想從我的數據庫填充與MembersCount cachedString,這是正確的方式,這樣做呢?

string cachedString; 
    cachedString = (string)Cache["CacheItem"]; 
    if (cachedString == null) 
    { 
    MySqlConnection Connection = siteStuff.GetConnection(); 
    MySqlCommand c = new MySqlCommand("SELECT COUNT(id) as TheCount FROM user", Connection); 
    Connection.Open(); 
    MySqlDataReader reader = c.ExecuteReader(); 
    reader.Read(); 
    cachedString = reader["TheCount"].ToString(); 
    Connection.Close(); 
    Connection.Dispose(); 
    Cache.Insert("CacheItem", cachedString);thanks TomTom! 

編輯:即時通訊目前使用此代碼:

int cacheNumberUsers; 
    cacheNumberUsers = (int)Cache["MembersCount"]; 
    if (cacheNumberUsers == null) 
    { 
     cacheNumberUsers = siteStuff.GetNumberUsers(); 
     Cache.Insert("MembersCount", cacheNumberUsers); 
    } 
    nrRegMembers.Text = cacheNumberUsers.ToString(); 

但IM得到錯誤

System.NullReferenceException: Object reference not set to an instance of an object. 

在線:

cacheNumberUsers = (int)Cache["MembersCount"]; 

編輯: 我想我需要先將項目插入緩存中?

Cache.Insert("MembersCount"); 

但是,我把這個代碼放在哪裏?換句話說,我是否應該將它放入OnLoad,以便在每個頁面請求時觸發?或者我應該檢查它是否存在?

回答

0

不要使非數據庫問題成爲數據庫問題。

如:緩存生成頁面的輸出。使用.NET?使用輸出緩存/部分輸出緩存來返回可能每分鐘生成一次的舊sql。

解決數據庫上的perforamcne問題,同時忽略更高級別並不聰明 - 而對於.NET,所有Web前端技術都具有wnoderfull輸出緩存機制。如果你要說你使用哪一個......我可以幫你鏈接。

+0

噢..對不起,我已經使用了.NET大約5年,但我並不是真正的親,畢竟.. 如果你能給我一些很好的鏈接,我可以如何提供所有類型的東西,所以我會很感激,我可以加快我的網站! 現金/部分輸出緩存聽起來很有趣! 任何提示在社區上應用該功能的最佳方法是哪些功能可以上傳用戶創建的圖像,文章和論壇帖子? – midnightsyntax

+0

你用什麼.NET技術來生成網頁? – TomTom

+0

對不起,我離開了它,它是4.0 – midnightsyntax

相關問題