C# ASP.NET应用程序中搜索结果的缓存体系结构
在ASP.NET系统中缓存昂贵搜索结果的好设计是什么? 任何想法都会受到欢迎。。。特别是那些不需要发明我们自己的复杂基础设施的项目 以下是与此问题相关的一些一般要求:C# ASP.NET应用程序中搜索结果的缓存体系结构,c#,asp.net,caching,C#,Asp.net,Caching,在ASP.NET系统中缓存昂贵搜索结果的好设计是什么? 任何想法都会受到欢迎。。。特别是那些不需要发明我们自己的复杂基础设施的项目 以下是与此问题相关的一些一般要求: 每个搜索结果可以生成从零到数百条结果记录 每次搜索执行起来都比较昂贵和耗时(在数据库中为5-15秒) 结果在客户端显示之前必须分页,以避免用户信息过载 用户希望能够在返回的结果中进行排序、筛选和搜索 用户希望能够在搜索结果中快速切换页面 用户希望能够在任意数量的页面上选择多个项目(通过复选框) 一旦搜索完成,用户期望相对快速的性
- 每个搜索结果可以生成从零到数百条结果记录
- 每次搜索执行起来都比较昂贵和耗时(在数据库中为5-15秒)
- 结果在客户端显示之前必须分页,以避免用户信息过载
- 用户希望能够在返回的结果中进行排序、筛选和搜索
- 用户希望能够在搜索结果中快速切换页面
- 用户希望能够在任意数量的页面上选择多个项目(通过复选框)
- 一旦搜索完成,用户期望相对快速的性能
- 优点:ASP.NET基础架构提供了易于实施的良好支持
- 缺点:服务器上非常健谈,内存密集,数据缓存的时间可能超过需要的时间;禁止负载平衡实践
- 优点:高效使用服务器内存;使用负载平衡进行扩展的能力李>
- 缺点:来自.NET基础设施的有限支持;当数据结构发生变化时,潜在的脆弱性;对数据库施加额外的负载;要复杂得多
- 优点:用户体验可接近“富客户端”水平;大多数浏览器都可以在本地处理JSON/XML—存在可供操作的像样库(例如jQuery)
- 缺点:初始请求可能需要很长时间才能下载;在客户端机器上占用大量内存;在某种程度上需要手工制作的Javascript来实现
- 优点:最小化对服务器的内存影响;允许状态在客户端需要时继续存在;与JSON/XML相比,客户端上的内存使用略有改善
- 缺点:大型数据集在客户端/服务器之间来回移动;与使用JSON/XML的纯客户端缓存相比,性能较慢(由于网络I/O);实现起来要复杂得多-来自.NET/browser的支持有限
既然你说欢迎任何想法: 我们已经相当成功地使用企业库缓存来缓存来自LINQ结果的结果集 它支持自定义缓存过期,因此应该支持您的大部分需求(带有一点自定义代码)。如果搜索隐私很重要的话,它也有很多支持存储,包括加密的支持存储 它功能齐全 我的建议是将#1和#3结合起来:
我建议您考虑一个单独的搜索体系结构,如果您的搜索索引允许,因为在自由文本关键字搜索中缓存是一个复杂的操作来有效地实现。
< P>如果您能够等到2010年3月,NET 4附带一个新的,它承诺很多实现(磁盘,备忘录)。