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

Firebase Hosting未识别Expiration Header,配置后无效果求助

Firebase Hosting 缓存过期头不生效?这几个排查方向一定要看!

兄弟,我之前折腾Firebase Hosting的时候也踩过这个缓存头的坑,给你列几个最常见的排查点:

  • 先确认你的firebase.json配置格式完全正确
    很多时候是配置放错位置或者语法写错了,正确的缓存头配置应该是在hosting字段下的headers数组里,举个标准例子:

    {
      "hosting": {
        "public": "dist",
        "headers": [
          {
            "source": "**/*.{js,css,woff2,woff}",
            "headers": [
              {
                "key": "Cache-Control",
                "value": "public, max-age=31536000, immutable"
              }
            ]
          },
          {
            "source": "**/*.html",
            "headers": [
              {
                "key": "Cache-Control",
                "value": "public, max-age=600"
              }
            ]
          }
        ]
      }
    }
    

    重点注意source的通配符:**是匹配所有子目录,*.js只匹配根目录的JS文件,如果你要覆盖所有层级的资源,必须用**/*.js这种写法。

  • 别忘重新部署配置!
    改完firebase.json后,一定要运行firebase deploy --only hosting把最新配置推给Firebase服务器——很多人只更新了代码,忘了同步配置,结果旧的缓存规则还在生效。

  • 浏览器缓存搞的鬼!
    有时候你已经部署了新配置,但浏览器还抱着旧缓存不放。这时候打开开发者工具(F12),在Network面板勾选「禁用缓存」,然后刷新页面再看请求头;或者直接用Ctrl+F5(Windows)/Cmd+Shift+R(Mac)强制刷新。

  • 检查rewrites规则会不会干扰
    如果你的hosting里配置了rewrites(比如单页应用把所有请求指向index.html),要确保headers的source规则放在rewrites前面,而且更具体的规则要排在前面(比如先写**/*.js,再写/**的rewrite),不然通用的rewrite可能会覆盖你的缓存头匹配。

  • Firebase自动优化的资源要注意
    Firebase Hosting会自动优化图片、字体这类资源,不过只要你在headers里明确指定了对应资源的缓存规则,自定义规则会优先于默认规则。但如果你的source没覆盖到这些优化后的资源路径,那就会用默认规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:59:10