LBu*_*kin 12 c# asp.net caching
在ASP.NET系统中缓存昂贵搜索结果的好设计是什么?
任何想法都会受到欢迎......特别是那些不需要发明我们自己的复杂基础设施的想法.
以下是与该问题相关的一些一般要求:
我看到了一些可能的选项,用于实现缓存的位置和方式:
1.在服务器上缓存(在会话或应用缓存中),使用回发或Ajax面板来促进有效的分页,排序,过滤和搜索.
2.在服务器上缓存(如上所述),但使用一段时间后移出内存的可序列化结构,以减少服务器上的内存压力
3.在客户端上缓存(使用JSON或XML序列化),使用客户端Javascript对页面进行分页,排序,筛选和选择.
4.使用数据的压缩/编码表示在客户端上缓存 - 在切换页面,排序,过滤和搜索时回调到服务器以进行解码.
5.我没有考虑过一些替代缓存方案......
如果你能够等到2010年3月,.NET 4.0附带了一个新的System.Caching.CacheProvider,它承诺了许多实现(磁盘,内存,提到的SQL Server/Velocity).
有技术的一个很好的幻灯片在这里.然而,它有点"滚动你自己"或其中很多.但是,当框架发布时,可能会有许多为Provider模型编写的封闭式和开源式提供程序.
对于你提出的六点,会出现一些问题
你将使用多少内存将整个存储器存储在RAM中?或者至少拥有最受欢迎的10到100个搜索词的缓存.在第一次搜索之后,智能和缓存相关搜索可能是另一个想法.
5-15秒的结果是等待搜索很长时间,所以我假设它类似于expedia.com搜索,其中查询多个源并返回大量信息.
从我有限的经验来看,客户端唯一缓存方法的最大问题是Internet Explorer 6或7.仅限服务器和HTML是我的首选,整个结果集在缓存中进行分页,在一段合理的时间段后到期.但是你可能已经尝试过了,看到服务器的内存被吃掉了.