我正在ASP.NET 1.1頁面的C#中創建一個搜索結果頁面。在我的數據層中,我有一個存儲普通舊ADO.NET存儲過程調用結果的DataSet。 DataSet有兩個DataTable,我使用DataVIew來過濾和排序列。 我只想填充一次數據集,然後處理DataTable和派生的DataView,直到頁面被卸載。 如何最好的將DataSet緩存在我的DAL中,以便它只填充PageLoad?我把它放在一個Cache對象,一個靜態成員變量,一個屬性......我沒有任何花哨的實體模型或ORM,這是.NET 1.1。提前致謝。如何緩存數據集以停止往返數據庫?
2
A
回答
4
您的DAL是否會被其他應用程序使用?如果沒有,那麼您可以根據存儲需要哪些功能來嵌入DataSet
在Cache
或Session
中的高速緩存。
Session
將特定於用戶,並在用戶會話過期時得到清理,這意味着數據可能比需要的時間長很多。 More info on Session
Cache
是不錯的,因爲它會自動失效(使用滑動過期如果搜索數據不會經常更改),你可以保存搜索標準與它,以便其他用戶可以利用搜索以及這將節省您的來電可能由多個用戶訪問數據庫。多位用戶能夠訪問這些數據是使用Session
的一大優勢。 More info on Cache
如果您打算在其他apap中使用您的DAL,您可能希望應用程序自行執行緩存。
你只需要像一個包裝:
// Consider this psuedo code for using Cache
public DataSet GetMySearchData(string search)
{
// if it is in my cache already (notice search criteria is the cache key)
string cacheKey = "Search " + search;
if (Cache[cacheKey] != null)
{
return (DataSet)(Cache[cacheKey]);
}
else
{
DataSet result = yourDAL.DoSearch(search);
Cache[cacheKey].Insert(result); // There are more params needed here...
return result;
}
}
1
0
如果這是每個用戶的數據不緩存大量數據付諸會議或類似的,你都嚴重製約着你的網站的能力規模。考慮到添加更多用戶時內存中信息量的增長情況,以及當您需要使用多個站點服務器時會發生什麼情況。
而是修改過程,以便您只能檢索需要顯示的數據頁面。
如果這是用於所有用戶的數據,請將其緩存。你可以使用asp.net緩存。
相關問題
- 1. 減少數據庫往返
- 2. Entitiy Framework - 數據庫往返
- 3. 減少往返數據庫
- 4. ehcache查詢緩存未命中後禁用數據庫往返?
- 5. 緩存的實體進行往返數據庫
- 6. 如何在數據庫表更新時緩存數據集
- 7. 緩存數據庫數據
- 8. 減少往返服務器/數據庫
- 9. Django數據庫查詢往返
- 10. 緩存數據庫
- 11. 數據庫緩存
- 12. 存儲庫和批量更新 - 避免數據庫往返
- 13. 防止數據表緩存數據
- 14. 我該如何停止cassandra數據庫?
- 15. 緩存數據流中的數據集
- 16. 許多往返數據庫,或所有數據/過濾器?
- 17. 如何將緩存數據保存到sqlite數據庫(android)
- 18. 停止啓動數據庫
- 19. 在緩存中收集數據並寫入數據庫
- 20. 如何忽略遞歸緩存數據以完全獲取數據庫存儲?
- 21. 在python中緩存數據庫數據
- 22. 如何在Mirth中加載靜態數據,避免很多往返數據庫
- 23. 如何緩存計數器以加速數據庫插入?
- 24. 從數據庫返回的Internet Explorer緩存數據
- 25. 如何監控數據庫往返運行
- 26. 操縱實體框架,以消除往返數據庫
- 27. 停止$ .ajax如果數據返回空
- 28. Hazelcast緩存數據庫數據緩存的Java
- 29. 智能(?)數據庫緩存
- 30. Django數據庫緩存
我不認爲我會再次使用此DAL,但我想盡量減少往返數據庫的往返行程,並使搜索結果適用於多個用戶。原始數據集對於所有用戶都是通用的,儘管他們可以通過DataView對其進行過濾。謝謝您的幫助。 – Brendan 2010-09-13 14:06:16