当前位置: 首页 > 知识库问答 >
问题:

流式传输文本数据时禁用Chrome缓冲

鲁英卫
2023-03-14

我们有一个通过http传输文本数据的站点。其设置方式如下:

  • 它不执行任何服务器端缓冲

当使用普通curl或FireFox时,文本从第一个字节流到浏览器。但是使用Chrome时,在发送1024字节之前不显示文本。之后,一切瞬间显现。

问题:有没有办法禁用这种缓冲行为?

更多信息:这里是一个简单的ASP。NET页面,该页面演示了以下行为:

<%@ language=c# %>

<%
    Response.BufferOutput = false;
    Response.ContentType = "text/plain";

    for (int i=0; i<50; i++)
    {
        Response.Write("01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567\r\n");
        System.Threading.Thread.Sleep(1000);
    }
%>

具有禁用压缩的web.config:

<configuration>
    <system.webServer>
        <urlCompression doStaticCompression="false" doDynamicCompression="false"/>
    </system.webServer>
</configuration>

我也有一个实时重现在http://bufferingtest.azurewebsites.net/.只要从Chrome和火狐上点击它来观察不同的行为。

共有2个答案

段劲
2023-03-14

尝试将内容类型文本/普通切换到应用程序/八位字节流

看看这个,进一步阅读:

文件下载是否需要内容类型:应用程序/八位字节流?

这个补丁对我非常有效。我遇到了与您描述的相同的问题,即发送编码为text/plain的小文本块;charset=UTF-8在Chrome中造成延迟,但在Firefox中没有。将类型更改为application/octet在不影响FireFox性能的情况下解决了Chrome上的问题。

柴飞星
2023-03-14

X-Content-Type-Options:nosniff添加到您的标题中,并告诉我您的情况。

根据Mozilla文档:

X-Content-Type-Options响应HTTP标头是服务器用来指示在Content-Type标头中通告的MIME类型不应更改并应遵循的标记。这允许选择退出MIME类型嗅探,或者换句话说,这是一种说网站管理员知道他们在做什么的方式。

 类似资料:
  • 我试图禁用我的AngularJS应用程序中的缓存,但它无法使用以下代码: 当我使用

  • null null 但问题是我想以编程的方式完成这个任务。 我实际上想做的是: 步骤 但正如我所提到的,Firefox对MKV说不。 所以我尝试了hls的东西,但我不能完全得到命令来生成流,也不能在飞行中播放。 我是在命令行上开始的 所以我想再做一次 我要请求服务器播放视频文件 它生成一个子进程FFmpeg,该进程执行代码转换 向客户端发送流 客户端应该能够搜索到底,并且应该播放该内容。

  • 我按照Kantega/storm-twitter-workshop项目链接的步骤进行操作,但我在某一点上卡住了。在测试凭证时,通过运行文件夹中的主类作弊 cd作弊< br> mvn编译exec:Java-dexec . classpathscope = compile-dexec . main class = storm . starter . cheatingtwitterfuntopology

  • 问题内容: 我有一个200MB的文件,想通过下载提供给用户。但是,由于我们希望用户仅下载一次此文件,因此我们这样做: 强制下载。但是,这意味着整个文件必须加载到内存中,这通常不起作用。我们如何以每块kb的速度将文件流式传输给他们? 问题答案: 尝试这样的事情

  • 问题内容: 使用MVC模型,我想编写一个JsonResult,它将Json字符串流式传输到客户端,而不是一次将所有数据转换成Json字符串,然后将其流回客户端。我有一些动作需要在Json传输时发送非常大的记录(超过300,000条记录),我认为基本的JsonResult实现是不可伸缩的。 我正在使用Json.net,我想知道是否有一种方法可以在转换Json字符串时流化它的块。 但是我不确定如何将这

  • 问题内容: 默认情况下,Python的解释器是否启用输出缓冲? 如果答案是肯定的,那么有什么方法可以禁用它? 到目前为止的建议: 使用命令行开关 包装每次写入后刷新的对象 设置环境变量 还有其他方法可以在执行过程中以编程方式在中设置一些全局标志吗? 问题答案: 你可以使用”python -u”()或通过设置环境变量PYTHONUNBUFFERED来跳过整个python进程的缓冲。 你还可以将替换为