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

Firefox与Chrome均不缓存HTTP Range请求,该请求是否存在问题?

HTTP Range请求未被浏览器缓存的问题分析

Firefox 102.0.1和Chrome 103.0.5060.53均未缓存以下HTTP Range请求:

await fetch("https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/2020/S2A_36QWD_20200701_0_L2A/TCI.tif", {
    "credentials": "omit",
    "headers": {
        "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0",
        "Accept": "*/*",
        "Accept-Language": "en-US,en;q=0.5",
        "Range": "bytes=0-5",
        "Sec-Fetch-Dest": "empty",
        "Sec-Fetch-Mode": "cors",
        "Sec-Fetch-Site": "cross-site"
    },
    "referrer": "http://localhost:8080/",
    "method": "GET",
    "mode": "cors"
});

该请求在Firefox中返回的响应如下:

HTTP/1.1 206 Partial Content
x-amz-id-2: jGkETlSznrL2heZz48jtyNuZelyqgCBJFDGgGMlzkWeQ3Eyha16y8bs1A4kJbcyXCOpPtmGmFis=
x-amz-request-id: B0NZTXZGYV6D6YPT
Date: Tue, 12 Jul 2022 09:49:45 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: HEAD, GET
Vary: Origin, Access-Control-Request-Headers, Access-Control-Request-Method
Last-Modified: Wed, 01 Jul 2020 15:33:02 GMT
ETag: "1cfd50c6d5047f6e76a2c8b848e2866c-28"
Cache-Control: public, max-age=31536000, immutable
Accept-Ranges: bytes
Content-Range: bytes 0-5/234841786
Content-Type: image/tiff; application=geotiff; profile=cloud-optimized
Server: AmazonS3
Content-Length: 6

请求本身无问题,浏览器不缓存是符合规范的行为

这个请求在语法和HTTP协议层面没有错误,浏览器不缓存该Range请求的原因主要有几点:

  • 尽管响应头包含Cache-Control: public, max-age=31536000, immutable,但浏览器对带Range头部的部分请求缓存策略更严格。HTTP规范允许缓存部分响应,但需要同时具备ETag或Last-Modified标识(本次响应两者都存在),但实际浏览器对这类缓存的支持有限。
  • 本次请求是跨域场景(Sec-Fetch-Site: cross-site),Chrome和Firefox在处理跨域Range请求时,出于安全或实现细节考虑,会选择不缓存这类响应,即使响应头明确允许缓存。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 08:18:23