【问题标题】:setting the Vary head from firebase function从 firebase 功能设置 Vary head
【发布时间】:2019-07-31 18:36:05
【问题描述】:

我无法在 firebase 函数中成功设置 Vary 标头。

我的代码:

res.set('Vary', 'Accept-Encoding');

服务器响应:

vary: x-fh-requested-host, accept-encoding, cookie, authorization

我有几个函数可以返回纯粹基于“Accept-Encoding”标头缓存的数据。但无论我做什么,firebase 似乎都会用它自己的标题覆盖我的标题。至关重要的是,它正在添加 cookie、授权,这会破坏我的缓存。

我的函数是通过使用 firebase 托管重写的 url 访问的。根据这些docs应该是可以的。

【问题讨论】:

    标签: firebase google-cloud-functions firebase-hosting


    【解决方案1】:

    Firebase 托管会自动将这些标头添加到 Vary,以防止意外的跨用户缓存泄漏。这仍然可以很好地用于缓存,因为 Firebase 托管还会从 Cookie 标头中删除所有 cookie,但名为 __session 的除外。

    如果您的内容不会因 Authorization 标头而有所不同,我建议您不要在对函数的请求中包含该标头(因为您的函数无论如何都不应该使用它,除非它是 @987654325 的一部分@)。

    【讨论】:

    • 嗯,感谢您的回复。也许我问错了问题。我得到的缓存命中率低于预期。我做了一个(可能是错误的)假设,即它是因为可变标头。但正如你所说,我没有在请求中传递它,所以可能不是那样。
    • 您如何评估缓存命中率?值得注意的是,内容缓存在每个单独的边缘节点上,因此只有当对相同内容的请求到达相同的边缘节点时才会发生命中。
    • 我没有准确测量。但是我注意到,当我认为应该从 CDN 提供查询时,我在家中的机器上运行时,我的查询会定期到达我的服务器。我将内容缓存了几个小时,但有时只需几分钟(或几秒钟),我的查询就会到达我的服务器。我没有注意到一个模式
    猜你喜欢
    • 2017-08-25
    • 2021-05-10
    • 2019-02-21
    • 2020-07-31
    • 2018-01-06
    • 2017-12-21
    • 1970-01-01
    • 1970-01-01
    • 2019-12-01
    相关资源
    最近更新 更多