真的有必要在每次页面加载时更新订阅吗?
Is it really necessary to update the subscription on every page load?
我目前正在开发一个允许用户订阅推送通知的网络应用程序。我们会将订阅存储在数据库中 table 映射到用户 ID,当需要发送通知时,我们将查找用户的订阅并发送通知。
我一直在遵循这个指南:
https://developers.google.com/web/fundamentals/codelabs/push-notifications/
一切顺利,但感觉有些不对劲"right"。
在每次加载页面时,service worker 都会被注册,然后它会检查他们是否已经订阅,然后即使他们已经订阅它也会调用 updateSubscriptionOnServer()
,其中包含以下注释:
// TODO: Send subscription to application server
这实际上意味着每个页面加载都将尝试将相同的订阅写回数据库。显然我们会在应用程序中处理它,但它似乎并不理想。
使用 Web 推送 API,这是预期的方法吗?
非常感谢
是的,在每次页面加载时将订阅发送到服务器可能很有用:
- 用户可能已将浏览器设置中的权限从
blocked
更改为 granted
(或默认),因此您想创建订阅并将其发送到服务器
- 订阅端点可能因不同原因而改变,所以您需要确保当前端点发送到服务器(之前的端点将return
410 Gone
)
上述几点和性能之间的折衷可以是仅在给定页面(例如主页)上将订阅发送到服务器。
我目前正在开发一个允许用户订阅推送通知的网络应用程序。我们会将订阅存储在数据库中 table 映射到用户 ID,当需要发送通知时,我们将查找用户的订阅并发送通知。
我一直在遵循这个指南: https://developers.google.com/web/fundamentals/codelabs/push-notifications/
一切顺利,但感觉有些不对劲"right"。
在每次加载页面时,service worker 都会被注册,然后它会检查他们是否已经订阅,然后即使他们已经订阅它也会调用 updateSubscriptionOnServer()
,其中包含以下注释:
// TODO: Send subscription to application server
这实际上意味着每个页面加载都将尝试将相同的订阅写回数据库。显然我们会在应用程序中处理它,但它似乎并不理想。
使用 Web 推送 API,这是预期的方法吗?
非常感谢
是的,在每次页面加载时将订阅发送到服务器可能很有用:
- 用户可能已将浏览器设置中的权限从
blocked
更改为granted
(或默认),因此您想创建订阅并将其发送到服务器 - 订阅端点可能因不同原因而改变,所以您需要确保当前端点发送到服务器(之前的端点将return
410 Gone
)
上述几点和性能之间的折衷可以是仅在给定页面(例如主页)上将订阅发送到服务器。