【问题标题】:What is the best way to "cache" frequently changing search results“缓存”频繁更改的搜索结果的最佳方法是什么
【发布时间】:2011-01-10 21:21:54
【问题描述】:

我目前正在开发一个 ASP.NET Intranet 应用程序。此应用程序的一项功能允许用户搜索项目以管理它们(编辑、删除等)。

目前我没有使用任何类型的缓存(因为搜索结果变化如此频繁);然而,当用户的搜索结果大约是 4000 条时,系统需要将近 13 秒的时间才能返回。由于搜索结果不会在页面请求之间存储,因此页面将需要 13 秒来处理页面上完成的任何回发(排序、分页、...任何事情)。

我一直在研究 ASP.NET 缓存,但我不认为它真的是为了缓存经常变化的结果。

我想知道缓存/存储我的搜索结果的最佳方式是什么?

会话? (它已经被其他数据变得臃肿......)

感谢您分享您的想法,

-弗林尼

【问题讨论】:

    标签: asp.net caching


    【解决方案1】:

    您不想显示无效数据。最好的办法是坚持分页并使用 AJAX 快速访问服务器以获取下一页。

    【讨论】:

    • 感谢您的回复 ChaosPandion 但 Ajax 将如何帮助加快速度?即使使用 Ajax 让分页看起来更流畅,处理请求仍然需要 13 秒....
    【解决方案2】:

    听起来你有两个问题。

    花 13 秒返回结果太长了。您需要优化该查询并将其降低到亚秒级响应。

    其次,您退回的商品太多。如果他们正在搜索,没有人会翻阅 4,000 个项目。相反,如果他们得到这么大的结果集,他们应该改进他们的搜索条件。

    【讨论】:

    • 这是我应该说的。 :)
    • +1。是的,即使考虑到分页、排序等,13 秒也太长了。研究如何做到这一点的不同策略。提示:你的网页代码不是正确的地方。是时候开始使用 SQL 了。
    • 还有一件事,我们有包含数十万条记录的表。搜索、分页和排序都是通过单个 s'proc 调用处理的。我们的页面响应时间介于按下鼠标按钮和松开鼠标按钮之间。
    • 我完全同意 13 秒太长了。我无法控制查询。这是由第三方 SDK 完成的,该 SDK 需要 13 秒才能返回 4000 条记录……我有很多字段可以让用户细化他们的搜索条件。希望他们足够聪明,知道如何搜索他们想要使用的确切项目(我知道我会......但普通用户?)
    • @Frinivale,听起来你需要一个新的 3rd 方工具,你已经长大了。你能以另一种方式获取数据吗?也许,运行一个使用 SDK 的服务来保持你可以查询的 sql 数据库?那,或者如果您的用户可以处理 13 秒的延迟,您应该存储他们的搜索结果(所有 4000 条记录),并将他们的过滤器作为键,直到他们进行新的搜索。这样他们就可以查询,获得一次速度,然后快速翻页。
    【解决方案3】:

    缓存频繁更改的数据对我来说似乎也不太好,使用适当的索引和分页来降低开销。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-18
      • 1970-01-01
      • 2016-08-21
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      • 2012-02-19
      • 1970-01-01
      相关资源
      最近更新 更多