是否可以在第二代 https 可调用函数的响应上设置缓存标头?即,缓存控制标头告诉浏览器将其保留在缓存中一段时间。
这是我的 https 可调用的典型样板:
import { getErrorMessage } from "@repo/common";
import { logger } from "firebase-functions";
import { z } from "zod";
import { region } from "~/config.js";
import { onCall, HttpsError } from "firebase-functions/v2/https";
const schema = z.object({
something: z.string(),
});
export const my_callable_function = onCall(
{
region,
},
async (event) => {
try {
const { something } = schema.parse(event.data);
console.log(`Do something: ${something}`);
} catch (err) {
const message = getErrorMessage(err);
logger.error(`Failed to get something: ${message}`);
throw new HttpsError("internal", message, err);
}
}
);
这些函数仅在我们的 Firebase 应用程序内部使用。我看到还有 onRequest 可以用来代替 onCall,它提供了明确的请求和响应对象,但我想坚持使用 onCall,因为它确实处理了用户身份验证并且这些功能不可公开访问。
这是不可能的,并且自 v1 以来没有改变。 SDK 接管所有 HTTP 详细信息。可调用对象旨在用于远程过程调用,不应缓存。如果需要实现缓存,请使用普通的 HTTP 函数,并确保客户端和服务器都同意该方案。
参见: