1

我想知道处理我的网站用户将相互发送的评论的推送通知的最佳方式。

当提交新评论时,它显然会存储在我的数据库中。但是,我还想将每个用户的评论存储在 memcache 中或作为会话数据(无论什么被认为是最好的?),这样每次用户访问我的网站/刷新页面时,他们都可以快速获得未读通知而不会点击我的数据库。

我想到的一种方法是在用户收到推送通知时,将 AJAX 请求发送回服务器以更新他们的内存缓存/会话数据。

问题是如果用户未登录或当前未使用该站点,该怎么办。即使用户不在那里“接收”它,AJAX 请求是否仍会被发送?还是 AJAX 请求会“等待”并在用户重新访问该站点时立即发生?首先以这种方式处理通知是否是一个好主意?

4

1 回答 1

0

你想保持你的 PHP 会话很小。将大量数据塞入其中会导致性能下降。我不会将它们用于此目的。我最多会使用它来存储他们最后一次检查他们的评论。

您也不是在做推送通知,而是在使用客户端轮询。您可以使用 Websockets 进行推送通知,但不能使用 AJAX(您可以使用长轮询来伪造它)。除非您的用户已登录并打开浏览器访问您的站点,否则不会运行任何 Javascript 来启动 AJAX 调用以检查评论。

Websockets 或长轮询要求您使用 Apache 的辅助服务器。他们会吃掉你在 Apache 中的可用连接。

我假设您希望评论是持久的,所以请记住“忘记”是 Memcached 的一个功能。Redis 可以设置为持久化数据。如果您使用 memcached 作为性能提升,您需要确定数据完整性是否重要(删除通知是可以的),或者您是否需要设计一些健壮性以便他们总能收到通知。

希望这可以帮助。

于 2013-01-21T22:06:03.253 回答