如何只显示一次css通知(最佳方法)

时间:2012-04-05 19:17:54

标签: php notifications

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

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

缓存? 会议? 数据库? 的Javascript?

如何?

3 个答案:

答案 0 :(得分:4)

没有自由的想法。

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

答案 1 :(得分:4)

  1. 将通知保存在某个通知队列(数据库)
  2. 检查是否应显示通知(PHP,用户访问适合通知的网站)。
  3. 如果通知适用于当前上下文,请显示通知(PHP + CSS)。
  4. 如果用户驳回通知,请发送AJAX请求以清除通知队列(JavaScript)中的通知。
  5. 通知队列应保存在数据库中。会话或cookie对此不可靠。

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

答案 2 :(得分: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会话设置为使用这些表。无论哪种情况,这里都没有任何神秘或超出这个世界,这是完全正常的技术。