【问题标题】:Architecture question involving search & session state涉及搜索和会话状态的架构问题
【发布时间】:2009-03-10 19:51:32
【问题描述】:

我有一个可以过滤和排序的数千行网格。在每一行上,您都可以单击一个详细信息按钮,这将为您带来一个新页面,其中包含有关该页面的详细信息。因为这是一个按钮,所以您不能中键单击或右键单击并在新选项卡中打开。此外,单击返回时,您会丢失过滤器和搜索结果。

为了解决这个问题,我考虑了以下几点:将按钮切换为链接,过滤和搜索时,使用get而不是post请求。这样,您可以通过右键或中键切换到新页面,如果您确实正常点击链接,则返回将正常工作。

但并未进行此更改。我们被要求在详细信息页面上添加“下一个结果/上一个结果”按钮集,以便您导航。虽然不是一个优雅的解决方案,但它至少可以工作。

我建议将查询字符串参数添加到详细信息页面,这将基于过滤器重新生成搜索查询,并允许您在代码中获取下一个和上一个结果。

一位团队成员对此解决方案提出了异议。他认为重新查询数据库是对服务器资源的浪费。相反,提出了一种解决方案来添加包含结果列表的会话变量。然后你就可以用它来导航了。

我对此提出了质疑,因为您不能在不破坏导航的情况下打开多个标签,并且新结果不会实时附加到列表中。此外,如果您担心优化,会话将是最后使用的东西,因为它会占用内存并阻止服务器复制......除非您将结果存储回数据库中。

什么是最好的解决方案?

【问题讨论】:

    标签: asp.net architecture


    【解决方案1】:

    会话听起来不像是赢家,不会随着大量用户扩展。

    重复访问数据库似乎没有必要,但这取决于成本 - 有多少用户、他们多久刷新/过滤一次以及该查询的成本是多少?

    如果你确实使用查询字符串,你可以通过参数缓存页面。

    该按钮上的一些 AJAX 代码如何检索详细信息 - 保留底层网格并在 div/面板或新窗口/选项卡中显示详细信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      相关资源
      最近更新 更多