Mik*_*sen 4 .net asp.net performance caching
我有一个网站,允许用户使用各种搜索条件查询特定食谱。例如,您可以说“向我展示我可以在 30 分钟内制作的所有食谱,这些食谱将使用鸡肉、大蒜和面食,但不使用橄榄油。”
该查询通过 JSON 发送到 Web 服务器,并反序列化为SearchQuery对象(具有各种属性、数组等)。
实际的数据库查询本身相当昂贵,并且有很多默认的搜索模板会被频繁使用。因此,我想开始缓存常见查询。我对各种缓存技术做了一些调查,并阅读了大量有关该主题的其他 SO 帖子,但我仍在寻找有关走哪条路的建议。现在,我正在考虑以下选择:
System.Web.Caching:这将为缓存中有多少项、它们何时过期以及它们的优先级提供很多控制。但是,缓存的对象由字符串而不是可散列对象作为键。我不仅需要能够将SearchQuery对象转换为字符串,而且哈希必须是完美的并且不会产生任何冲突。Dictionary<SearchQuery, Results>在所有会话中都保留在内存中的对象。由于搜索结果可能开始变得相当大,因此我希望能够限制缓存的查询数量,并为旧查询提供一种过期的方法。像 FIFO 队列这样的东西在这里可以很好地工作。我担心线程安全之类的事情,并且想知道编写自己的缓存是否值得在这里付出努力。我还研究了一些其他第三方缓存提供商,例如NCache和Velocity。这些都是分布式缓存提供程序,对于我目前的需求来说可能完全是多余的。另外,似乎我见过的每个缓存系统仍然需要用字符串作为对象的键。理想情况下,我想要一个能够在进程中保存缓存的东西,允许我通过对象的哈希值进行键控,并允许我控制过期时间和优先级。
如果有任何关于免费且最好是开源解决方案的建议或参考可以帮助我,我将不胜感激。谢谢!
| 归档时间: |
|
| 查看次数: |
1873 次 |
| 最近记录: |