我正在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