如何在Firebase云函数中设置特定头文件的缓存?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Firebase云函数中设置特定头文件的缓存?相关的知识,希望对你有一定的参考价值。

我不确定这是否可行。我正在向一个外部api发出请求,并且在每次从我的应用程序发出请求时,我将用户的查询传递到一个自定义的 'query' 云函数(Typescript)中的头。⤵

export const searchQuery = functions.https.onRequest(async (request, response) => {

    // : Reads request query data from user
    const query = request.headers.query;

...

我尝试设置缓存,使每次查询都能单独缓存结果,但似乎没有效果。~

(在没有设置variety header的情况下,缓存也可以工作,但是它只缓存第一个搜索结果) (所有的请求都是以 GET )

这是设置 'query' 头作为缓存的不同规则(用Typescript编写)。⤵

...

    return await admin.auth().verifyIdToken(tokenId) // : Authenticates response
        .then(() => {

            // : Set cache-control
            console.log(request.headers);
            response.set('Vary', 'Accept-Encoding, query');
            response.set("Cache-Control", "public, s-maxage=600");
            response.set("Access-Control-Allow-Origin", "*");
            response.set("Access-Control-Allow-Methods", "GET");

            // : Grab API search data
            axio.get(urlAssembler).then(APIData => {
                response.status(200).send(APIData.data);
            }).catch(error => console.log(error));

        })
        .catch((err) => response.status(401).send(err));

...

我在Cloud Functions w Firebase上有这个设置,而不是Cloud Functions with Firebase Hosting。我想知道这两者是否有区别,但似乎没有。

在我的 firebase.json 我注意到它是为Cloud Functions设置的,而不是为Firebase Hosting设置的。也许我需要把它设置为Firebase Hosting,以便在那里定义头文件的缓存控制?

这是我的firebase.json ⤵。

{
  "functions": {
    "predeploy": [
      "npm --prefix "$RESOURCE_DIR" run lint",
      "npm --prefix "$RESOURCE_DIR" run build"
    ]
  }
}
答案

我就这个问题联系了Firebase的支持人员,帮助我的人说 Firebase主机 需要使用,以便根据像上面描述的头来进行缓存。

我还没有测试过,所以一旦我测试过,我就会更新这个答案来确认它是否有效。

有一篇文章是由Firebase支持部门帮助我的人推荐给我的,内容是关于如何做到 缓存 a 云功能 但我不相信这是利用CDN的。

以上是关于如何在Firebase云函数中设置特定头文件的缓存?的主要内容,如果未能解决你的问题,请参考以下文章

如何在spring boot中设置禁用浏览器缓存?

如何在 JBoss EAP 6.1 中设置 http 头文件

在 Cloud Function for Firebase 中设置 Firebase 消息的优先级

如何在 Flutter 中设置不同的 firebase 环境

如何在 Flutter Web 的 Firebase 分析中设置用户属性?

如何在 Flutter Web 项目中设置 Firebase 功能