javascript - Firebase Cloud Functions 托管, 'once' 回调在云函数中有效,但在托管站点中无效

标签 javascript firebase https google-cloud-functions firebase-hosting

我正在使用 Firebase Cloud Functions 通过 HTTP 触发器读取数据,并且它在默认提供的 cloudfunctions.net URL 中运行得非常好。

现在,出于个人目的,我使用 Firebase 托管。我试图在数据库中的子项发生更改时获取一个值,该值在函数 URL 中工作,但在托管 URL 中访问时它只工作一次,然后它总是显示与第一次相同的内容。它不会等待在数据库中加载新的更改。

这是我正在使用的代码:

exports.bigben = functions.https.onRequest((req, res) => {
  res.set('Cache-Control', 'public, max-age=300, s-maxage=600');
  res.set('Vary', 'Accept-Encoding, X-My-Custom-Header');
  var counter  = admin.database().ref('/Rac');
  counter.once('child_changed', (snapshot) =>{
  res.send(snapshot.val());
  });
});

最佳答案

您正在响应中设置缓存 header :

res.set('Cache-Control', 'public, max-age=300, s-maxage=600');

这意味着您发送的响应将被缓存(通过 CDN,也可能是您的浏览器),时间长度取决于您指定的时间(5 或 10 分钟)。

如果您不希望缓存响应,请不要设置缓存 header 。

关于javascript - Firebase Cloud Functions 托管, 'once' 回调在云函数中有效,但在托管站点中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44770282/

相关文章:

javascript - 仅替换字符串之间的特殊字符,而不是字符串的开头和结尾?

javascript for() 循环、split() 和数组问题

android - 应用程序上的用户数(未注销)是否等于 firebase 上的同时连接数?

android - 使用电话号码和密码的 Firebase Auth

asp.net-mvc - ASP.NET MVC RequireHttps

node.js - 如何将http重定向到https

https - 如何使用 weinre 调试 https 加载的页面?

c# - 检查javascript是否被禁用?

javascript - 拆分按钮格式化取决于浏览器

android - Firebase 获取所有 key