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

Ответ выглядит так:

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

Несмотря на задействованные заголовки, я не использую встроенный в браузер EventSource, а скорее полифилл, который позволяет мне устанавливать дополнительные заголовки. Полифилл использует XMLHttpRequest под прикрытием, но мне кажется, что независимо от того, как выполняется запрос, он не должен останавливаться в течение 20 секунд.

Что может привести к тому, что Chrome так заглохнет?

Редактировать: Страница chrome: // net-internals / # events показывает, что произошла ошибка тайм-аута:

t=33627 [st=    5]      HTTP_CACHE_ADD_TO_ENTRY  [dt=20001]
                --> net_error = -409 (ERR_CACHE_LOCK_TIMEOUT)

Сообщение об ошибке относится к исправлению, добавленному в Chrome шесть месяцев назад (https://codereview.chromium.org/345643003), который реализует 20-секундный таймаут, когда один и тот же ресурс запрашивается несколько раз. На самом деле один из багов, который патч пытается исправить (ошибка номер 46104) относится к аналогичной ситуации, и патч предназначен дляуменьшить время, проведенное в ожидании.

Возможно, ответ (или обходной путь) здесь заключается в том, чтобы запросы выглядели иначе, хотя, возможно, Chrome мог бы соответствовать заголовку «no-cache», который я установил.

Ответы на вопрос(3)

Ваш ответ на вопрос