但是,這讓我想到了什麼是緩存密鑰的最大長度。密鑰的最大長度是多少?通過嘗試存儲的東西這種方式可以用一些非常漫長的鍵名值結束了,它真的沒有做關於保持最常見的搜索,以及最近使用過的任何東西。
該鍵的長度是「字符串」本身的最大長度。
根據文檔這裏:http://msdn.microsoft.com/en-us/library/system.web.caching.cache.add.aspx,密鑰可以與在對象類型的值的字符串定義。
我會建議標籤定製對象具有獨特的關鍵,所以,當你從緩存查詢,你可以沿着自定義對象標記更復雜的信息對象的自定義對象。
編輯11072009_1154
後,我仔細看了一遍你的要求,我注意到,你的目標是緩存經常搜索的字符串。
在你給出的示例,經常搜索的字符串可能是 「微軟的Visual Studio 2008 Service Pack 1的」。在我看來,這應該是關鍵,而價值是一個自定義對象,它將具有額外的屬性來保存其他必要的屬性。
總之,這可能是例如: 關鍵: 「微軟的Visual Studio 2008 Service Pack 1的」 值:CustomObjectInstance其中:CustomObjectInstance.UserLanguage = 「英語」 和CustomObjectInstance.UserLocalization: 「USA」,CustomObjectInstance.UserKeyboardLayout =「UK」等。
AFAIK,Cache實現了一種字典型的數據結構,所以密鑰必須足夠獨特。因此,如果您的密鑰是「Microsoft Visual Studio 2008 Service Pack 1 - usergroup2,3,6,17,89」,您如何唯一標識您的ASp.NET Web應用程序中的此特定密鑰?因爲在我的搜索文本框中,我不會插入usergroup 2,3,6,17,89
想想也像StackOverflow網站搜索功能:用戶將插入一個常見的搜索字符串,即「學習jquery材料」,然後在我看來,你的緩存鍵應該有一個「學習jQuery材料」的條目。
編輯11072009_1250
感謝您的附加信息。我還可以通過強制執行多個層來提供額外的解決方案,我的意思是,而不是將所有信息填充到一個緩存層中,爲什麼不存儲額外的層。
意味着你的緩存將有一個鍵(字符串)和一個指向字典的值。
另一種可能的解決方案是通過使用SQL Server全文索引搜索來推送這些功能,但我對SQL Server全文索引搜索並不十分熟悉,但如果我們可以將此功能用於現有基礎結構如果可能的話。
與任何事情一樣......測試和測試以確保您不會遇到內存限制。 – 2009-07-10 05:49:31