2

今日、私は Facebook を使用していて、新しい機能を含むページに入ると通知が表示されることに気付きましたが、クリックして閉じるとすぐに通知が永久に消えてしまいます。何もしない場合、通知は常に表示されます。[閉じる] をクリックすると、キャッシュをクリアし、コンピューターを変更し、ログアウトして再度ログインすると、通知は表示されなくなります。

私の質問は、その情報を保存する最良の方法は何ですか? ユーザーがすでにその通知を見たことを保存して、再度表示する必要がないようにするにはどうすればよいですか?

クッキー?セッション?データベース?ジャバスクリプト?

どのように?

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 に答える