这个问题开始于另一个板块 ,但Dave Ward在这里非常迅速和乐于助人,所以我想在这里接受希望最后剩下的一块拼图。

基本上,我一直在寻找一种方法来从一个漫长的过程中不断更新网页。 我认为AJAX是要走的路,但Dave有一篇关于使用JavaScript的好文章 我将它集成到我的应用程序中,它在我的客户端上工作得很好,但不是我的服务器WebHost4Life。 我有另一台服务器@Brinkster,并决定在那里尝试它,它的工作。 我的客户端,WebHost4Life和Brinkster上的所有代码都是相同的,所以WebHost4Life显然会发生一些事情。

我打算给他们写一封电子邮件或要求技术支持,但我想积极主动,并试图弄清楚他们的结果可能会导致这种差异。 我尽我所能用我的代码来关闭缓冲,如Page.Response.BufferOutput = False 他们可以实施哪些服务器设置来导致这种差异? 没有他们的帮助,我有什么方法可以自己规避它吗? 如果没有,他们需要做什么?

作为参考,我的应用程序的更简单版本的工作版本的链接位于@ http://www.jasoncomedy.com/javascriptfun/javascriptfun.aspx ,并且相同的版本不起作用位于@ http:// www.tabroom.org/Ajaxfun/Default.aspx 您会注意到在工作版本中,您获得了每个步骤的更新,但是在没有完成的步骤中,它会在那里停留很长时间,直到一切都完成,然后立即对客户端进行所有更新...这让我伤心。

===============>>#1 票数:5

嘿,杰森。 对不起,你仍然遇到这个问题。

我要做的是设置一个简单的页面,如:

protected void Page_Load(object sender, EventArgs e)
{
  for (int i = 0; i < 10; i++) 
  {
    Response.Write(i + "<br />"); 
    Response.Flush();

    Thread.Sleep(1000);
  }
}

正如我们之前讨论的那样,确保.aspx文件没有除@Page声明之外的任何标记。 这有时会触发页面缓冲,而不会发生正常情况。

然后,将技术支持人员指向该文件并描述所需的行为(10次更新,每秒1次)。 我发现给他们一个简单的测试用例对于解决这些问题还有很长的路要走。

绝对让我们知道它最终会是什么。 我猜是某种内联缓存或反向代理,但我很好奇。

===============>>#2 票数:2

我不知道你可以强制缓冲 - 但是你和服务器之间的反向代理服务器会影响缓冲(因为缓冲区会影响代理的连接 - 而不是你的浏览器)。

===============>>#3 票数:2

我对这个做了一些毫无结果的研究,但我会分享我的思路,希望它有所帮助。

在这种情况下,IIS是客户端和服务器之间的事情之一,因此了解每种情况下涉及的IIS版本可能很有用 - 并调查IIS是否可以通过某种方式在打开时执行自己的缓冲连接。

虽然它不是很省钱,但这篇关于IIS6 v IIS 5的文章是我正在考虑的事情。

===============>>#4 票数:2

您应该确保IIS和任何其他过滤器都不会尝试压缩您的响应。 生产服务器很可能为动态页面启用了IIS压缩,例如带有.aspx后缀的页面,而开发服务器则没有。

如果是这种情况,IIS可能会在尝试压缩并将任何结果发送回客户端之前等待整个响应(或相当大的块)。

我建议使用Fiddler监视生产服务器的响应,并确定响应是否正在进行gzip压缩。

如果响应压缩确实是问题,您可以通过Content-Encoding:Identity标头指示IIS忽略特定响应的压缩。

===============>>#5 票数:2

问题是,如果你打开动态gzip压缩 ,IIS将进一步缓冲输出(超出ASP.NET的缓冲)(默认情况下这些天)。

因此,为了阻止IIS缓冲您的响应,您可以做一些小问题来欺骗IIS认为客户端无法通过覆盖Request.Headers["Accept-Encoding"]标头来处理压缩(是的, Request .Headers,相信我):

Response.BufferOutput = false;
Request.Headers["Accept-Encoding"] = ""; // suppresses gzip compression on output

当它发送响应时,IIS压缩过滤器会检查Accept-Encoding: gzip ...的请求标头Accept-Encoding: gzip ...如果它不存在,则不压缩(因此进一步缓冲输出)。

  ask by Jason Shoulders translate from so

未解决问题?本站智能推荐:

2回复

即使函数返回false,ONCLientClick()也会回发

我正在尝试使ASP:Button不会回发并刷新页面。 我已将OnClientClick设置为返回false作为函数的结果。 HTML- JS- 发生样式更改,但是页面立即刷新,样式返回到其原始状态。
2回复

Fancybox宽度不适用-autoSize:false不是答案

我以为我遇到的问题与这两篇文章相同: Fancybox宽度不适用 fancybox宽度不适用 但是我已经解决了这两个问题,但问题仍然存在。 本质上,当我单击图像链接时,宽度和高度属性将被忽略,而是显示一个大约30 x30的框。 视频正在加载,关闭窗口按钮等全部正
1回复

如果我使用Enabled = false,则缺少asp:Button的OnClientClick(或HTML中的onclick)

在页面中,我有两个单选按钮。 如果单击单选按钮2,它将激活搜索按钮。 如果用户单击此搜索按钮,它将使用jQuery .ajax调用来检索数据并显示在jqGrid中。 启动时必须禁用搜索按钮。 禁用,是指如果用户单击它,则什么也不会发生。 由于按钮是asp按钮,因此我将Enabl
1回复

当代码隐藏中的Enabled = False时,无法更改DropDownList SelectedValue

下午好, 我有一个DropDownList,它在OnPageLoad后面的代码中设置Enabled = false。 稍后,当我按页面上的保存按钮时,我尝试提取数据,并从禁用的DropDownList中获取一个奇怪的值,并从启用的DropDownList中获取一个正确的值。 我的问
1回复

如果HTML标记仅存在于字符串的开头,则返回false

如果HTML标记仅存在于字符串的开头,我想返回false。 否则,如果它们存在于字符串中,则返回true。 到目前为止,我能做的是,如果html标记位于开头,则返回false,但如果它位于字符串中,则删除html标记之后的所有内容。 并且如果标记之前的文本长度为true,则仅保留html标
3回复

即使返回错误,Chrome警报框也会提交页面

在我的应用程序中,我有一个文本框来搜索项目。 在此文本框中,我希望用户在搜索之前必须输入至少2个字符。 如果少于2个字符,那么我想显示一个简单的警告框,告诉用户输入至少2个字符。 在我的文本框代码看起来像: function checkSearchLen(obj, defa
3回复

Panel.Visible = false不会添加到DOM吗?

我有一个.aspx,其中我从后面的代码中动态添加了几个面板。 我想根据某些条件显示或隐藏它们。 所以我在用。 现在,当我在开发人员工具中查看DOM时,没有标记相应的隐藏面板。 我所看到的只是可见面板的标记。 我认为.Visible=false将为元素的样式添加display:no
2回复

启用/禁用基于CheckBox的asp:TextBox控件。

我需要根据复选框启用/禁用asp.TextBox / Input。 如果CheckBox.Checked = true,则需要启用asp.TextBox / Input;如果CheckBox.Checked = false,则需要禁用asp.TextBox / Input。 下面是我拥有
1回复

处理html表单响应

我有一个看起来像这样的html表单: 现在假设“ myPage.aspx”如果成功返回“ Done”,如果失败则返回“ Error”。 我想显示显示结果的警报。 我该如何处理myPage.aspx响应?
1回复

从链接到确认按钮扩展程序的asp文本框中删除HTML标记,而不设置ValidateRequest =“ false”

当用户在模式弹出窗口中的asp.net文本框控件中输入<>符号时,回发时将引发运行时错误。 我知道过去对此类问题的很多答案是设置ValidateRequest =“ false”,但是我不想设置该参数,因为担心会禁用可能阻止其他攻击的安全功能。 用户希望能够复制和粘贴有时包含