1

1 秒あたりのリクエスト数が多い Web サーバーがあります。データベースとの I/O のパフォーマンスを最適化するために、サーバーは現在、HTTP クエリによって 2 つの SQL クエリのみを実行します。

  • 現在のユーザーを取得するためのクエリが 1 つあります。
  • リソースを読み書きするためのクエリが 1 つあります。

そして、セッション変数内に現在のユーザーのIDもキャッシュするのが賢明ではないかどうか、現在疑問に思っています。このように、サーバーは HTTP クエリによって 1 つの SQL クエリのみを実行できます。

そのためには、クライアントはアプリで自分自身を認証する必要があります。次に、SQL クエリがユーザー名とパスワードをチェックした後、サーバーは自分の ID をセッション変数に保存できます。この後、不要な SQL クエリを削除できます。

これは非常にシンプルで便利なように思えますが、Devise gem (Rails または Sinatra 用) などの一般的な認証プラグインがこのように機能しないように見えるのはなぜでしょうか。

それらはそうするための最良の方法ですか?についてどう思いますか?

アイデアをありがとう。

4

1 に答える 1

0

これ、Devise とほとんどの認証フレームワークが機能する方法です。ID をセッションに保存する目的は、データベースからユーザーをすばやく簡単に取得できるようにすることです。おそらく、何らかの理由でユーザーを取得しているのでしょう (ページに名前を表示する、認証をチェックする、モデルの割り当てなど)。セッションからIDを取得しただけでは、この情報はわかりません。したがって、とにかくデータベースからユーザーを取得する必要があります。

于 2012-11-02T15:34:36.853 に答える