小编flu*_*ggo的帖子

当对同一资源发出多个请求时,Chrome会停止?

我正在尝试第一次实现长轮询,并且我正在使用XMLHttpRequest对象来执行它.到目前为止,我已经成功地在Firefox和Internet Explorer 11中获取了活动,但Chrome奇怪的是这次奇怪的是.

我可以加载一个页面,它运行得很好.它立即发出请求并开始处理和显示事件.如果我在第二个选项卡中打开页面,其中一个页面开始看到接收事件的延迟.在开发工具窗口中,我看到了这种时序的多个请求:

截图

"停滞"将持续长达20秒.它不会发生在每个请求上,但通常会连续发生在多个请求中,并且会出现在一个选项卡中.

起初我认为这是我的服务器的问题,但后来我打开了两个IE选项卡和两个Firefox选项卡,它们都连接并接收相同的事件而不会停止.只有Chrome遇到这种麻烦.

我认为这可能是我正在制作或提供请求的方式的问题.作为参考,请求标头如下所示:

Connection: keep-alive
Last-Event-Id: 530
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36
Accept: */*
DNT: 1
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
Run Code Online (Sandbox Code Playgroud)

响应如下:

HTTP/1.1 200 OK
Cache-Control: no-cache
Transfer-Encoding: chunked
Content-Type: text/event-stream
Expires: Tue, 16 Dec 2014 21:00:40 GMT
Server: Microsoft-HTTPAPI/2.0
Date: Tue, 16 Dec 2014 21:00:40 GMT
Connection: close
Run Code Online (Sandbox Code Playgroud)

尽管涉及到标题,但我没有使用浏览器的原生EventSource,而是使用polyfill来设置其他标题.polyfill正在使用XMLHttpRequest,但在我看来,无论请求是如何进行的,它都不应该停顿20秒.

什么可能导致Chrome像这样失速?

编辑: Chrome的chrome:// net-internals /#events页面显示涉及超时错误:

t=33627 [st=    5]      HTTP_CACHE_ADD_TO_ENTRY  [dt=20001]
                --> net_error = -409 (ERR_CACHE_LOCK_TIMEOUT)
Run Code Online (Sandbox Code Playgroud)

错误消息是指六个月前添加到Chrome的补丁(https://codereview.chromium.org/345643003),当多次请求同一资源时,该补丁实现了20秒的超时.实际上,补丁尝试修复的 …

google-chrome long-polling google-chrome-devtools

41
推荐指数
1
解决办法
3万
查看次数

为什么在禁用顶点属性数组零时OpenGL绘图失败?

我在使用ATI驱动程序的OpenGL 3.3内核运行我的顶点着色器时遇到了极大的麻烦:

#version 150

uniform mat4 graph_matrix, view_matrix, proj_matrix;
uniform bool align_origin;

attribute vec2 graph_position;
attribute vec2 screen_position;
attribute vec2 texcoord0;
attribute vec4 color;
varying vec2 texcoord0_px;
varying vec4 color_px;

void main() {
    // Pick the position or the annotation position
    vec2 pos = graph_position;

    // Transform the coordinates
    pos = vec2(graph_matrix * vec4(pos, 0.0, 1.0));

    if( align_origin )
        pos = floor(pos + vec2(0.5, 0.5)) + vec2(0.5, 0.5);

    gl_Position = proj_matrix * view_matrix * vec4(pos + screen_position, 0.0, 1.0);
    texcoord0_px …
Run Code Online (Sandbox Code Playgroud)

opengl vertex-shader opengl-3 vertex-attributes

10
推荐指数
1
解决办法
3269
查看次数