質問
基本的に私のウェブサイトには、ボックスのスタックがあるサイドバーがあります。各ボックスは、ユーザーが崩壊または拡張できます。現在ログインしているユーザーの各ボックスのステータスを保存する必要があります。ユーザーがブラウザまたはコンピューターを変更した場合、すべてのボックスがデフォルトのステータスに移動するため、Cookieを使用したくありません。
ユーザーがボックスを崩壊/展開するたびにクエリを作成するデータベースにこの情報を保存する必要がありますか?これをどのように処理しますか?ありがとう。
編集: ユーザーがボックスのアニメーションを楽しんでいるという理由だけで、2秒で10回のようにトグルボタンを繰り返しクリックした場合はどうなりますか?彼は2秒で10のクエリを作成します。それで、おそらく質問は次のとおりです。 いつ このデータを保存する必要がありますか?
解決
ボックスが変更されるたびに(クライアント側)「変更」関数を呼び出します。
(クライアント側)状態の2つの項目を保持します。サーバーの最後の更新が送信された時間と、タイマーが設定されているかどうか。
更新を送信する(クライアント側)「更新」関数を作成し、状態を更新して、最後のアップデートが今であることをマークします。
変更された関数が呼び出されたら:タイマーが設定されている場合は、すぐに返します。更新が送信されたことがない場合、または最後の更新が10秒以上前に送信された場合は、更新関数を呼び出して戻ります。それ以外の場合は、10秒後に更新を送信するタイマーを設定します。
タイマーコールバックは、タイマーフラグを単純にクリアし、更新関数を呼び出す必要があります。
また アンロード イベントチェックタイマーが設定されているかどうか、そしてタイマーがクリアされ、タイマーコールバック関数を呼び出すかどうかを確認します。
その結果、すぐに更新を送信します それ外 ユーザーが羽ばたきしている場合、その場合、せいぜい10秒ごとにアップデートを送信します。
更新を失う場合がある場合がありますが、これは、ユーザーがトグリングで再生され、タイマーが発射される前にページを閉じた場合にのみ発生する可能性があります。
他のヒント
複数のコンピューターからこれらのオプションを維持する必要がある場合は、何らかの形のサーバーサイドストレージが必要になります。
これは、データベースまたはフラットファイルです。選択は、利用可能なもの、スキルセット、およびスケーリングの必要性によって異なります。数人のユーザーがいる場合は、フラットファイルが最良の選択肢を選択する場合があります。