0

このような質問がいくつかあることは知っていますが、質問はこの特定の状況に関するものです。

オンラインでテストを受けるためのプラットフォームを開発しています。テストは、画像と所属する問題のセットです。Azure でホストされ、MVC 4 を使用しています。

ユーザーがテストの半分を受けてブラウザがクラッシュしたり、何かがテストから逸脱して戻ってきたりした場合、再開するオプションが表示されることをどのように望んでいますか.

私は自分で1つのアイデアを持っていますが、他のオプションがあるかどうか知りたい. localstorage の使用を検討していました。ユーザーがテストを開始すると、テストの情報が localstorage に保存され、ユーザーが新しいイメージに移動するたびに、ローカルの状態が更新されます。次に、test-player が読み込まれると、進行中のテストが利用可能かどうかがチェックされます。

どうすればできますか?いずれかの魔女同様の問題/解決策。

4

2 に答える 2

1

この情報をクライアント ブラウザに保存することはお勧めしません。ユーザーは、ローカル ストレージ、Cookie などにアクセスでき、それを変更できます。テストの開始時刻をサーバー上のデータベースに保存できます。次に、ユーザーが質問に答えるためにサーバーにリクエストを送信するたびに、テストがまだアクティブであるかどうか、または最大許容時間が経過したかどうかを確認します。

于 2012-10-20T07:07:32.397 に答える
1

ローカル ストレージは各インスタンスに固有であるため、適切な選択ではありません。つまり、Web ロールのインスタンスが 2 つある場合 (推奨される最小値)、各インスタンスには独自のローカル ストレージがあります。それらは共有されておらず、特定のマシンのローカル ストレージにアクセスする方法はありません。

選択肢は 2 つあります。SQL Azure などのデータベースを使用するか、Azure キャッシングを使用できます。複雑なオブジェクトをシリアル化/逆シリアル化するのは非常に簡単なので、Azure キャッシュの方がおそらく簡単ですが、キャッシュが 72 時間しか有効でないという欠点があります。キャッシュされたオブジェクトが 72 時間以内にアクセスまたは更新されない場合、そのオブジェクトは消去されます。

于 2012-10-20T00:48:05.910 に答える