Chrome复用HTTP/1.1连接时IIS已关闭空闲连接,导致首次请求报ERR_EMPTY_RESPONSE;需将IIS连接超时从120秒调至300秒,回收应用池,并可选禁用Chrome连接复用或关闭内核缓存。

谷歌浏览器访问本地IIS服务器时,隔一段时间不操作再点网页,首次加载就弹出“服务器已断开连接,且未发送任何数据”,点第二次却能正常打开——这不是网络或DNS问题,而是Chrome主动复用HTTP/1.1连接时,IIS默认的连接空闲超时(2分钟)比Chrome的TCP连接复用窗口更短,导致Chrome拿着一个已被IIS关闭的socket继续发请求。
检查并延长IIS的连接超时时间
打开IIS管理器 → 左侧选中本机计算机名 → 右侧双击【高级设置】→ 找到【连接超时(秒)】→ 把默认的120改为【300】(5分钟)。
这一步必须改。IIS默认2分钟就回收空闲连接,而Chrome在页面静默后仍会缓存连接句柄约4~6分钟,两者错位直接触发ERR_EMPTY_RESPONSE。
改完不用重启IIS,但需刷新当前站点的应用程序池(右键对应应用池 → 【回收】)。
禁用Chrome的TCP连接复用(临时验证用)
方法一:启动Chrome时加参数禁用连接复用
在快捷方式目标末尾添加 --disable-http-cache --disable-features=NetworkService,然后回车运行。
方法二:修改注册表强制缩短Chrome复用窗口(仅Windows)
打开注册表编辑器 → 定位到 HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome → 新建DWORD(32位)值,命名为 MaxSocketIdleTimeSec → 数值数据设为【120】(与IIS原值对齐)。
注意:注册表修改后需完全退出Chrome(任务管理器里杀掉所有chrome.exe进程),否则不生效。
调整IIS内核模式缓存行为
第一步:以管理员身份运行PowerShell
第二步:执行命令:Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\HTTP\Parameters' -Name 'EnableKernelCache' -Value 0
第三步:运行 net stop http /y && net start http
这会关闭IIS的内核缓存,避免其在连接关闭后仍向Chrome返回RST包而非标准FIN,从而消除Chrome底层socket状态混乱。该操作不影响网站功能,仅改变连接终止信号类型。
改完立即生效,无需重启IIS或服务器。



















