2

今天我在 Facebook 上,注意到当您进入具有新功能的页面时,他们如何向您显示通知,但在您单击关闭后,通知会永远消失。如果你什么都不做,通知会一直存在,如果你点击关闭,那么你可以清除缓存,更改计算机,注销并重新登录,通知将不会出现。

我的问题是,存储该信息的最佳方式是什么?如何存储用户已经看到该通知,这样我就不必再次显示它?

饼干?会议?数据库?Javascript?

如何?

4

3 回答 3

4

没有什么可怕的想法。

无论您是否检查过通知,它们都可能保存在数据库中。

于 2012-04-05T19:19:39.903 回答
4
  1. 将通知保存在某个通知队列(数据库)中
  2. 检查是否应该显示通知(PHP,用户访问适合通知的站点)。
  3. 如果通知适合当前上下文,则显示通知 (PHP + CSS)。
  4. 如果用户关闭通知,则发送 AJAX 请求以从通知队列 (JavaScript) 中清除通知。

通知队列应保存在数据库中。会话或 cookie 对此不可靠。

然而,这只是一个假设,也是实现通知接口的方式,但我猜 Facebook 的实现非常相似。

于 2012-04-05T19:21:58.237 回答
1

客户端

您不会看到太多的选项卡间通信,但如果使用得当,它会非常棒,并且为您的 Web 应用程序提供了一些巨大的优势(例如节省带宽)。

我曾经有一个很好的例子,但我找不到它,所以我将在这里展示一个快速原型。

我假设您在整个代码中都有 jQuery 和 jQuery Cookie 插件。

<script type="text/javascript">

    var cookie = document.cookie;
    var timer = setTimeout(function(){
        if(document.cookie!=cookie){
            cookie = document.cookie;
            jQuery('#notes').text(jQuery.cookie('notes'));
        }
    }, 500);

    function send(msg){
        // update server
        /* you usually would do an ajax call here */
        // update client tabs
        jQuery.cookie('notes', msg);
    }
</script>

<div id="notes"></div>
<button onclick="send('Hi');" value="Hi"/>
<button onclick="send('Bye');" value="Bye"/>

服务器端

在服务器上,他们可能并不真的需要这个通知数据,所以我会冒险猜测内存表(易失性存储)——它既快速又高效。如果需要,您也可以设置 PHP 会话以使用这些表。无论哪种情况,这里都没有什么神秘或超凡脱俗的,这是完全正常的技术。

于 2012-04-05T19:34:06.057 回答