Asp classic 响应缓冲区限制超出经典ASP错误
我做了一些关于响应缓冲区限制超出错误的研究,并且知道我应该在我的asp代码中使用Response.Flush或Response.Flush 我在代码中使用了这两种解决方案。在页面顶部,如下所示:Asp classic 响应缓冲区限制超出经典ASP错误,asp-classic,Asp Classic,我做了一些关于响应缓冲区限制超出错误的研究,并且知道我应该在我的asp代码中使用Response.Flush或Response.Flush 我在代码中使用了这两种解决方案。在页面顶部,如下所示: <%@LANGUAGE="VBSCRIPT" %> <%Response.Buffer = false%> 但现在我面临的问题是,加载页面花费了太多的时间。那么还有其他解决办法吗 我不知道的唯一解决方案是增加缓冲区限制大小。在我的配置文件中,我没有任何与buff
<%@LANGUAGE="VBSCRIPT" %>
<%Response.Buffer = false%>
但现在我面临的问题是,加载页面花费了太多的时间。那么还有其他解决办法吗
我不知道的唯一解决方案是增加缓冲区限制大小。在我的配置文件中,我没有任何与bufferesize相关的代码
更新:代码示例:
Response.Flush()
rsCustomer.MoveNext
这是我正在使用的代码示例。调用查询后,我将结果绑定到表。您不能同时使用这两个。response.buffer必须为true才能使用response.flush。考虑到MSDN如何声明它将导致运行时错误,我甚至不知道为什么它会起作用 此外,不应在循环中使用response.flush。这意味着每次循环结束时,您都会向浏览器发送信息。这将导致对浏览器的推送次数过多 编辑:Lankymart在评论中提到使用循环的mod变量更频繁地刷新记录。为了便于操作,将其添加到我的答案中。这就是您将要做的:
<%
sSQL = "SELECT "
sSQL = sSQL & " tbl.[Customer]"
sSQL = sSQL & " FROM tblCart"sSQL = sSQL & " WHERE"
sSQL = sSQL & " tbl.[Name] = 'Test'
counter = 0
rs.Open sSql, ConnectionString
%>
table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td style="padding: 2px;" class="bgmed">
<strong>Customer</strong>
</td>
</tr>
<%
Do While Not rs.EoF
counter = counter + 1
%>
<tr>
<td>
<%= rs.Fields("Customer").value %>
</td>
</tr>
<%
if counter mod 10 = 0 then
Response.Flush
End If
rs.MoveNext
Loop
%>
</table>
在dreamweaver中,我喜欢这样做,这样就不会产生抖动
</tr>
<%dim bgcolor, counter
bgcolor = "#E6E8FF"
counter = 1 %>
<%
While ((Repeat1__numRows <> 0) AND (NOT rsSearch.EOF))
%>
<% if counter mod 10 = 0 then
Response.Flush
End If %>
<tr bgcolor="<%=bgcolor%>" onMouseOver="changeto(event, '#ECE9D8')" onMouseOut="changeback(event, '<%=bgcolor%>')">
<td align="left" valign="middle" nowrap="nowrap"><%=(rsSearch.Fields.Item("NAME").Value)%></td>
<td align="center" valign="middle" nowrap="nowrap"><%=(rsSearch.Fields.Item("ID").Value)%></td>
<td align="center" valign="middle" nowrap="nowrap"><%=(rsSearch.Fields.Item("WORK_AREA").Value)%></td>
<td align="center" valign="middle" nowrap="nowrap"><%=(rsSearch.Fields.Item("VIP_LOGIN").Value)%></td>
<td align="center" valign="middle" nowrap="nowrap"><%=(rsSearch.Fields.Item("ACTIVE").Value)%></td>
<td align="center" valign="middle" nowrap="nowrap"><%= DoDateTime((rsSearch.Fields.Item("LAST_LOGIN_DATE").Value), 1, 1033) %></td>
<td align="center" valign="middle" nowrap="nowrap"><%=(rsSearch.Fields.Item("EMAIL_ADDRESS").Value)%></td>
</tr>
<%counter = counter + 1%>
<%
Repeat1__index=Repeat1__index+1
Repeat1__numRows=Repeat1__numRows-1
rsSearch.MoveNext()
Wend
%>
</table>
<br />
你必须向我们展示你在循环中做了什么。这将是整个过程中的另一个处理过程导致问题。@Paul我的代码非常长。所以发布了示例代码。请仔细研究一下。不要回应。在循环的每次迭代中刷新使用Mod来分解它,这样它只会每隔这么多记录刷新一次。我肯定我几天前在一篇类似的帖子上写的,是你吗?现在在任何地方都找不到那篇文章,你删除了它并重新发布了吗?@Lankymart Hi你能告诉我如何使用Mod作为我的代码吗??我不是那个发帖问这个问题的人。对不起,迟了回复。嗨,你说得对。现在我使用response.buffer=true。但正如你所说,我应该在什么时候使用response.flush。现在我的页面加载速度非常慢。通常在重要的菜单和站点导航完成后使用。其思想是允许用户看到页面存在。在你的情况下,我可能在你的循环之前执行它。如果你有问题之后,考虑以某种方式分页。您在页面上发布了多少个结果?我根据日期在表中显示了大约100到200个结果。但当我加载页面时,我选择了大约2000条记录的所有记录。100条结果并没有那么糟糕,但200条正在推送它。这还取决于列的方式,以及列是否有大的文本块或blob项。
</tr>
<%dim bgcolor, counter
bgcolor = "#E6E8FF"
counter = 1 %>
<%
While ((Repeat1__numRows <> 0) AND (NOT rsSearch.EOF))
%>
<% if counter mod 10 = 0 then
Response.Flush
End If %>
<tr bgcolor="<%=bgcolor%>" onMouseOver="changeto(event, '#ECE9D8')" onMouseOut="changeback(event, '<%=bgcolor%>')">
<td align="left" valign="middle" nowrap="nowrap"><%=(rsSearch.Fields.Item("NAME").Value)%></td>
<td align="center" valign="middle" nowrap="nowrap"><%=(rsSearch.Fields.Item("ID").Value)%></td>
<td align="center" valign="middle" nowrap="nowrap"><%=(rsSearch.Fields.Item("WORK_AREA").Value)%></td>
<td align="center" valign="middle" nowrap="nowrap"><%=(rsSearch.Fields.Item("VIP_LOGIN").Value)%></td>
<td align="center" valign="middle" nowrap="nowrap"><%=(rsSearch.Fields.Item("ACTIVE").Value)%></td>
<td align="center" valign="middle" nowrap="nowrap"><%= DoDateTime((rsSearch.Fields.Item("LAST_LOGIN_DATE").Value), 1, 1033) %></td>
<td align="center" valign="middle" nowrap="nowrap"><%=(rsSearch.Fields.Item("EMAIL_ADDRESS").Value)%></td>
</tr>
<%counter = counter + 1%>
<%
Repeat1__index=Repeat1__index+1
Repeat1__numRows=Repeat1__numRows-1
rsSearch.MoveNext()
Wend
%>
</table>
<br />