2

谷歌应用引擎最近似乎将频道创建的免费配额从每天 8640 个大幅减少到 100 个。对于我不愿意使用付费计划的爱好项目,我将不胜感激有关优化频道创建的一些建议。

  1. 文档中特别提到每个频道 ID 只能有一个客户端。如果有办法解决这个问题会有所帮助,即使它仅适用于一台计算机上的多个客户端(例如多个选项卡)

  2. 我突然想到,我可以通过反复向服务器发送 XHR 请求来检查新消息来模拟通道功能,从而绕过限制。但是,我担心这种方法可能太慢了。是否有任何现有的图书馆遵循这一原则?

4

1 回答 1

5

每个渠道一位客户

不幸的是,没有一种简单的方法可以解决每个频道 ID 限制一个客户端的问题。我们实际上允许两个,但这是为了处理用户刷新他的页面的情况,而不是实际的扇出。

也就是说,您当然可以为此实施自己的解决方法。我见过的一个技巧是使用 cookie 在浏览器选项卡之间进行通信。然后,您可以选择一个选项卡作为频道的“所有者”,并通过 cookie 扇出数据。有关如何实现选项卡间通信的信息,请参阅此问题:浏览器选项卡/窗口之间的 Javascript 通信

轮询与频道

如果您愿意接受一些性能权衡,您可以轮询而不是使用 Channel API。Channel API 发送速度在 100-200ms 量级;如果您可以接受平均 500 毫秒,那么您可以每秒轮询一次。根据您发送的数据类型以及内存缓存可以容纳多少数据,这可能是一个可行的解决方案。我的猜测是您最大的问题将是实例小时数。

例如,如果您有 100 个客户,您将看到 100qps。您应该进行试验,看看是否可以在一秒钟内为您需要提供的数据提供 100 个请求,而无需启动第二个实例。如果没有,请继续增加延迟(即降低轮询频率),直到达到 1 个实例能够满足您的请求。

希望有帮助。

于 2011-12-01T15:17:14.523 回答