Firebase 从外部 API 获取和提供数据,更改不频繁
Firebase get and serve data from external API with infrequent changes
我开始使用 Firebase 函数从外部 API 收集数据,因为如果我通过客户端本身收集数据,它们会被 CORS 阻止。所以我使用函数从 firebase 节点服务器获取数据。
我已经测试过缓存功能正常。如果我在那个小时内调用相同的函数,则 firebase 函数不会执行并且 returns 缓存数据。
代码如下所示:
exports.myFunction = functions.https.onRequest((req, res) => {
cors(req, res, () => {
axios
.get("EXTERNAL_API_URL")
.then(function (response) {
res.set("Cache-Control", "public, max-age=3600, s-maxage=3600");
res.send({ data: response.data });
})
.catch(function (error) {
res.end();
});
});
});
我想知道这个选项是否正确,或者创建一个计划函数是否更好,每隔 1 小时 save/edit 来自 Firestore 文档中外部 API 的字符串数据。所以用户从 Firestore 获取数据。
最推荐的是什么?考虑到来自外部 API 的数据对所有用户都是相同的,因此不会经常更改,也不需要经过身份验证或登录即可获取该数据。
提前致谢!
鉴于你的数据不经常变化,我觉得用缓存比较好。如果您使用计划函数在 Firestore 中存储数据,那么您将不得不使用查询,这反过来会增加 cost,因为定价取决于执行的查询数量。
您还可以使用以下两种方法来避免将过时的数据返回给您的用户:
- 如果您担心您的用户可能会收到过时的内容,请在 set cache control 中缩短使用 s-maxage 的时间。
- 您还可以使用 vary header 来确定缓存的内容是否有效,或者内容是否应该通过源服务器重新验证。 Firebase 托管会自动执行此操作,因此您无需担心。
我开始使用 Firebase 函数从外部 API 收集数据,因为如果我通过客户端本身收集数据,它们会被 CORS 阻止。所以我使用函数从 firebase 节点服务器获取数据。
我已经测试过缓存功能正常。如果我在那个小时内调用相同的函数,则 firebase 函数不会执行并且 returns 缓存数据。
代码如下所示:
exports.myFunction = functions.https.onRequest((req, res) => {
cors(req, res, () => {
axios
.get("EXTERNAL_API_URL")
.then(function (response) {
res.set("Cache-Control", "public, max-age=3600, s-maxage=3600");
res.send({ data: response.data });
})
.catch(function (error) {
res.end();
});
});
});
我想知道这个选项是否正确,或者创建一个计划函数是否更好,每隔 1 小时 save/edit 来自 Firestore 文档中外部 API 的字符串数据。所以用户从 Firestore 获取数据。
最推荐的是什么?考虑到来自外部 API 的数据对所有用户都是相同的,因此不会经常更改,也不需要经过身份验证或登录即可获取该数据。
提前致谢!
鉴于你的数据不经常变化,我觉得用缓存比较好。如果您使用计划函数在 Firestore 中存储数据,那么您将不得不使用查询,这反过来会增加 cost,因为定价取决于执行的查询数量。
您还可以使用以下两种方法来避免将过时的数据返回给您的用户:
- 如果您担心您的用户可能会收到过时的内容,请在 set cache control 中缩短使用 s-maxage 的时间。
- 您还可以使用 vary header 来确定缓存的内容是否有效,或者内容是否应该通过源服务器重新验证。 Firebase 托管会自动执行此操作,因此您无需担心。