使用 Firebase Hosting + Cloud Run express 服务器时在哪里设置缓存控制?

问题描述

当您使用 Firebase Hosting + Cloud Run(快速服务器)时,Firebase Hosting 就像是您的客户端和服务器之间的代理。

我应该在哪里设置我的 Cache-Control 标头?

  • firebase.json 中配置 Firebase 托管
  • 或者我应该在 Cloud Run 上的快速服务器中使用 res.set("Cache-Control") 吗?

解决方法

两种方式都可以。但是无论您在 firebase.json 上设置什么,都会覆盖您在 express 代码上设置的内容。

例如:Firebase 托管上的 default Cache-Controlprivate

enter image description here

例如,如果您没有在 Cache-Control 中添加任何 firebase.json,而在快速回复中添加了 res.set("Cache-Control","no-cache");,那么您的回复将是 no-cache,因为您意图。

但如果您同时向 firebase.json 添加类似的内容,它会覆盖您的 res.set() 调用:

{
  "source": "/**","headers": [{
    "key": "Cache-Control","value": "public"           // OR EVEN IF YOU EXPLICITLY SET "private",WHICH IS THE DEFAULT
  }]                            // IT WILL OVERWRITE WHAT YOU SET ON YOUR SERVER WITH res.set() 
}