今天我在 Facebook 上,注意到当您进入具有新功能的页面时,他们如何向您显示通知,但在您单击关闭后,通知会永远消失。如果你什么都不做,通知会一直存在,如果你点击关闭,那么你可以清除缓存,更改计算机,注销并重新登录,通知将不会出现。
我的问题是,存储该信息的最佳方式是什么?如何存储用户已经看到该通知,这样我就不必再次显示它?
饼干?会议?数据库?Javascript?
如何?
今天我在 Facebook 上,注意到当您进入具有新功能的页面时,他们如何向您显示通知,但在您单击关闭后,通知会永远消失。如果你什么都不做,通知会一直存在,如果你点击关闭,那么你可以清除缓存,更改计算机,注销并重新登录,通知将不会出现。
我的问题是,存储该信息的最佳方式是什么?如何存储用户已经看到该通知,这样我就不必再次显示它?
饼干?会议?数据库?Javascript?
如何?
没有什么可怕的想法。
无论您是否检查过通知,它们都可能保存在数据库中。
通知队列应保存在数据库中。会话或 cookie 对此不可靠。
然而,这只是一个假设,也是我实现通知接口的方式,但我猜 Facebook 的实现非常相似。
您不会看到太多的选项卡间通信,但如果使用得当,它会非常棒,并且为您的 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 会话以使用这些表。无论哪种情况,这里都没有什么神秘或超凡脱俗的,这是完全正常的技术。