You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome/Chromium低磁盘空间下XHR请求重复执行失败问题排查

Chrome/Chromium磁盘空间相关XHR下载失败问题排查与解决方案

问题描述

Chrome/Chromium浏览器存在与剩余磁盘空间相关的下载异常:运行在专用PC上的媒体播放器应用,剩余磁盘空间虽显示不足(如示例中剩余1.5GB),但远大于待下载文件大小(如15MB),却出现下载失败问题。

复现代码

function _startDownloadBackground() {
        var httpRequest = new XMLHttpRequest();

        httpRequest.open('GET', 'images/background.mp4', true);
        httpRequest.responseType = 'blob';
        httpRequest.onload = () => {
            console.log('success');
        };
        httpRequest.onerror = () => {
            console.log('fail');
        };

        httpRequest.send();
    }

复现步骤与现象(本地运行无远程服务器影响)

  • 首次打开Chrome执行函数 → 成功
  • 再次执行函数 → 抛出ERR_FAILED 200错误
  • 刷新浏览器后执行 → ERR_FAILED 200错误
  • 开启DevTools的「Disable Cache」后执行 → ERR_FAILED 200错误
  • 强制刷新后执行 → ERR_FAILED错误
  • 关闭Chrome重新打开后执行 → 成功
  • 在DevTools中右键重放失败的XHR请求 → 成功

注:该问题仅出现在Chrome/Chromium浏览器,Edge、Firefox无此异常。

已尝试的无效方案

以下Chrome启动参数未解决问题:

  • --disk-cache-size=104857600
  • --aggressive-cache-discard
  • --enable-aggressive-domstorage-flushing

关键日志记录

通过chrome://net-export/导出的日志中发现两条关键记录:

  • HTTP_CACHE_DOOM_ENTRY [dt=0] --> net_error = -2 (ERR_FAILED)
  • HTTP_TRANSACTION_READ_BODY [dt=1](无URL_REQUEST_JOB_FILTERED_BYTES_READ请求),下一行显示Cancelled

解决方案

1. 重定向Chrome缓存目录到充足空间磁盘

修改Chrome启动参数,指定缓存目录到剩余空间充足的分区,强制绕过系统盘的空间限制:

--disk-cache-dir="D:\ChromeCache"

2. 手动清理Chrome缓存与临时文件

通过chrome://settings/clearBrowserData清理以下内容:

  • 缓存的图片和文件
  • Cookie及其他网站数据
  • 下载历史记录
    即使剩余空间看似足够,碎片化缓存文件可能触发Chrome的磁盘空间检测机制,清理后可恢复正常下载。

3. 为XHR请求添加禁用缓存头

在请求中添加Cache-Control: no-store头,强制Chrome直接读取本地资源而非操作缓存:

function _startDownloadBackground() {
        var httpRequest = new XMLHttpRequest();

        httpRequest.open('GET', 'images/background.mp4', true);
        httpRequest.responseType = 'blob';
        // 禁用缓存,直接获取资源
        httpRequest.setRequestHeader('Cache-Control', 'no-store');
        httpRequest.onload = () => {
            console.log('success');
        };
        httpRequest.onerror = () => {
            console.log('fail');
        };

        httpRequest.send();
    }

4. 检查磁盘实际可用空间

系统显示的剩余空间可能未包含隐藏系统文件、虚拟内存或磁盘碎片占用:

  • 使用Windows磁盘清理工具释放系统盘空间
  • 检查磁盘是否存在坏道导致空间计算异常

5. 更新Chrome到最新稳定版

旧版本Chrome的磁盘缓存管理逻辑可能存在Bug,更新到最新版本可修复已知的空间检测问题。

内容的提问来源于stack exchange,提问作者AdrianHolmes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 01:00:15