在大型Web搜索中使用MaxRequestLength

时间:2009-09-24 19:31:46

标签: asp.net oracle

我有一个应用程序,其中包含引用300,000个客户的数据。当用户进行搜索时,结果通常比我们的MaxRequestlength允许的大,我们已经通过两种方式解决了这个问题:我们将MaxRequestLength增加到102400(KB)并要求用户提供第一个名称的两个字母和两个姓氏的字母,用于限制返回的客户记录的数量。这使我们不会超过MaxRequestLength限制。

我只是想知道是否有人对这是否是一个特别好的方法有任何见解,MaxRequestLength可能或应该有多大限制,以及在这种情况下其他选项可能有用。

5 个答案:

答案 0 :(得分:5)

我见过的大多数Web应用程序通过返回分页列表并仅显示结果的第一页来处理此问题。

在使用ORM的现代实现中,“Skip”和“Take”运算符仅用于检索给定页面所需的那些记录。

因此,任何给定的请求都不会超过一页上的记录数。

答案 1 :(得分:2)

我建议分页结果而不是显示所有内容。我还建议添加多个搜索字段,以便用户进一步过滤其结果。这将允许您的用户更快地找到他们正在寻找的内容。

答案 2 :(得分:1)

您可以从我的评论中猜到,我认为MaxRequestLength仅限制请求的大小( - >从客户端/浏览器发送到服务器的数据量)。

如果超出此限制,那么这可能意味着您有一个巨大的ViewState,它随每个响应一起发送。 ViewState存储在页面上的隐藏字段中,并随每个PostBack发送回服务器(这是MaxRequestLength设置可以发挥作用的地方)。您可以通过在Web浏览器中查看页面源并查找名为“__VIEWSTATE”和大字符串值的隐藏INPUT元素来轻松检查此内容。

如果是这种情况,您应该尝试减小ViewState的大小,例如:由

  • 在控件(GridView或其他)上设置ViewState =“false”并在每个PostBack上重新绑定控件(这是推荐的方法)
  • 在服务器端存储ViewState
  • 压缩ViewState

答案 3 :(得分:0)

如果您的要求允许,我建议实施服务器端分页。这样你只能通过网络而不是整个记录集发送一页有价值的记录。

答案 4 :(得分:0)

从人的角度来看,300,000条记录是完全无法使用的结果集。

正如其他人所说,将结果分页到前50或100条记录。让他们对它进行排序并提供缩小搜索条件的方法。

透视,请看谷歌。它们默认为每页10条记录。造成这种情况的部分原因是人们宁愿提供更多的标准而不是通过大型结果集进行探索。