4

Codeigniter と MySQL を使用してクイズ Web サイトを構築しています。

この 2 つの方法を使用してクイズを評価します。

  1. ユーザーが回答を送信するたびにリクエストを送信します (10 の質問に対して 10 のデータベース クエリ)。
  2. クイズの最後にリクエストを送信します。(これには、結果配列から回答を検索するためのクエリと多くの計算が必要になります。)

セッションに一時的な(クイズが提出されないまでの)データを保存することを考えています。

注: 格納されたデータは、データベースから直接フェッチされた結果ではなく、ビューに送信する前に PHP を使用して処理された配列です。

そうすることで、最初のケースで 10 個のクエリを保存できます。
2 番目のケースでは、データベースの結果を処理するための db クエリと時間を節約できます。

Stackoverflow に関するこれらのいくつかの質問を読むまでは、これが最善の解決策でした

質問 1 質問 2 質問 3

上記の質問から得た基本的なアイデアは、データベース クエリを使用することです (KISS ルールのため、古いデータが返される可能性があります)。

はい、それは多くのディスク容量を消費しますが、同時にウェブサイトのパフォーマンスを向上させていると思います.

だから私の質問は次のとおり
です。
2. セッションはウェブサイトのパフォーマンスにどのように影響しますか?

4

1 に答える 1

7

何が「より良い」かは、サイトをどのように機能させたいかによって異なります。何らかの理由でユーザー セッションが失われた場合に、部分的に終了したクイズ データを忘れたいですか?

一般的に言えば、少なくともこの特定の問題については(特に、セッション関連のデータをDBに保存している可能性があるため)、「クエリがいくつかかるか」を気にしないでください。最も理にかなっています。」

とにかく、各ページ要求で少なくとも 1 回 (そしておそらく数回) DB に往復します。適切にインデックス付けされた行を挿入/更新するための追加のクエリは問題になりません。ブラウザが異常終了したり、何らかの方法でセッションを失ったりしたときに誰かのクイズの結果が失われること (あなたのせいまたは彼らのせい) は、おそらく避けたいことです。

要するに、ユーザーの回答をDBに保存しないという非常に説得力のある理由を提供していません。おそらく、これについてユーザーのセッションに依存しない正当な理由が数十(それ以上ではないにしても)あります。

編集して追加: データベースの仕事は非常に単純であることを思い出してください: データを保存することです。目的に合わせて使用​​してください。;)

于 2012-11-17T19:40:07.277 に答える