使用 Firebase 托管 + Cloud 运行 Express 服务器时,在哪里设置 Cache-Control?
Where to set Cache-Control when using Firebase Hosting + Cloud Run express server?
当您使用 Firebase 托管 + 云 运行(快速服务器)时,Firebase 托管就像您的客户端和服务器之间的代理。
我应该在哪里设置我的 Cache-Control
header?
- 在
firebase.json
配置Firebase Hosting
- 或者我应该在云 运行 上的快速服务器中使用
res.set("Cache-Control")
吗?
两种方式都可以。但无论您在 firebase.json
上设置什么,都会覆盖您在 express
代码上设置的内容。
例如:Firebase 托管上的 default Cache-Control
是 private
.
例如,如果您不在 firebase.json
中添加任何 Cache-Control
,而在您的明确回复中添加 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()
}
当您使用 Firebase 托管 + 云 运行(快速服务器)时,Firebase 托管就像您的客户端和服务器之间的代理。
我应该在哪里设置我的 Cache-Control
header?
- 在
firebase.json
配置Firebase Hosting - 或者我应该在云 运行 上的快速服务器中使用
res.set("Cache-Control")
吗?
两种方式都可以。但无论您在 firebase.json
上设置什么,都会覆盖您在 express
代码上设置的内容。
例如:Firebase 托管上的 default Cache-Control
是 private
.
例如,如果您不在 firebase.json
中添加任何 Cache-Control
,而在您的明确回复中添加 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()
}