我有一个有几千行的网格,可以过滤和排序。在每一行上,您可以单击详细信息按钮,该按钮将为您显示一个新页面,其中包含有关该页面的详细信息。因为这是一个按钮,所以无法单击鼠标中键或右键单击并在新选项卡中打开。此外,点击返回时会丢失过滤器和搜索结果。
为了解决这个问题,我考虑了以下内容:将按钮切换到链接,过滤和搜索时,使用get而不是post请求。这样,您可以通过右键单击或中键单击切换到新页面,如果您确实按照正常方式链接,则返回可以正常工作。
但是没有进行这种改变。我们被要求在详细信息页面上添加“下一个结果/上一个结果”按钮组,以便您进行导航。虽然不是一个优雅的解决方案,但它至少可以起作用。
我建议在详细信息页面中添加查询字符串参数,这将根据过滤器重新生成搜索查询,并允许您在代码中获取下一个和之前的结果。
团队成员对此解决方案提出异议。他认为重新查询数据库浪费了服务器资源。相反,提出了一种解决方案来添加包含结果列表的会话变量。然后,您可以使用它进行导航。
我对此有疑问,因为您不能在不破坏导航的情况下打开多个标签,并且新结果不会实时附加到列表中。此外,如果您担心优化,会话将是最后一件事,因为它占用内存并阻止服务器复制...除非您将结果存储回数据库。
什么是最好的解决方案?
答案 0 :(得分:2)
会话听起来不像是赢家,不会扩展到很多用户。
重复访问数据库似乎没必要,但这取决于成本 - 有多少用户,他们刷新/过滤的频率以及该查询的成本是多少?
如果您使用查询字符串,则可以按参数缓存页面。
该按钮上的某些AJAX代码如何检索详细信息 - 将底层网格保留在原位并在div /面板或新窗口/选项卡中显示详细信息。