0

基本的に私のウェブサイトには、ボックスのスタックを備えたサイドバーがあります。各ボックスは、ユーザーが折りたたんだり展開したりできます。現在ログインしているユーザーの各ボックスのステータスを保存する必要があります。ユーザーがブラウザやコンピュータを変更すると、すべてのボックスがデフォルトの状態になるため、Cookieを使用したくありません。

ユーザーがボックスを折りたたんだり展開したりするたびにクエリを実行するデータベースにこの情報を保存する必要がありますか?これをどのように処理しますか?ありがとう。

編集:ユーザーがボックスのアニメーションを楽しんでいるという理由だけで、ユーザーが2秒間に10回など、トグルボタンを繰り返しクリックした場合はどうなりますか?彼は2秒間に10回のクエリを実行します。したがって、おそらく問題は、このデータをいつ保存する必要があるかということです

4

2 に答える 2

1

複数のコンピューターからこれらのオプションを永続化する必要がある場合は、何らかの形式のサーバー側ストレージが必要になります。

これはデータベースまたはフラットファイルである可能性があります。選択は、利用可能なもの、スキルセット、およびスケーリングの必要性によって異なります。ユーザー数が少ない場合は、フラットファイルが最適です。

于 2010-10-21T21:49:31.497 に答える
1
  1. ボックスが変更されるたびに、(クライアント側の)「変更された」関数を呼び出します。

  2. (クライアント側の)状態の2つの項目を保持します。サーバーへの最後の更新が送信された時刻と、タイマーが設定されているかどうかです。

  3. 更新を送信し、状態を更新して最後の更新がちょうど今であったことを示す(クライアント側の)「更新」関数を記述します。

  4. 変更された関数が呼び出されたとき:タイマーが設定されている場合は、すぐに戻ります。更新が送信されたことがない場合、または最後の更新が10秒以上前に送信された場合は、更新関数を呼び出して戻ります。それ以外の場合は、10秒後に更新を送信するようにタイマーを設定します。

  5. タイマーコールバックは、タイマーフラグをクリアして、更新関数を呼び出すだけです。

  6. また、アンロードイベントで、タイマーが設定されているかどうかを確認し、タイマーが設定されているかどうかを確認して、タイマーコールバック関数を呼び出します。

したがって、結果として、ユーザーがフラッピングしている場合を除いて、更新をすぐに送信します。この場合、更新は最大で10秒ごとにのみ送信されます。

更新を失う場合もありますが、これは、ユーザーがトグルで遊んでいて、タイマーが起動する前にページを閉じた場合にのみ発生する可能性があります。その場合、ユーザーはおそらく気付かないでしょう。

于 2010-11-03T12:20:47.727 に答える