スポーツクラブのサイトを作っています。クラブはホスティングを別のウェブホストに移すことに興味がないので、私は現在のホストを使い続けています. 新しい Web アプリケーションをホストにデプロイしましたが、数時間のテストの後、ログインとセッション状態に関して何かがおかしいことが明らかになりました。
アイドル状態が 10 分以上続くと、突然、MVC 検証トークンの復号化が停止しました。IIS にアクセスしてマシン キーを静的な値に設定すると、この問題はなくなりましたが、ASP.NET のアイドル タイムアウト設定が 10 分に設定されていることが明らかになりました。これは、サイトでアクティビティがなければ、10 分ごとに InProc セッション データが破棄されることを意味します。ホストにサポート チケットを提出しましたが、ホストはアプリ プールの設定を変更することを望んでおらず、「これを増やすとパフォーマンスに影響を与える可能性があるため、現時点ではサーバーで設定を変更することはできません (sic)」と述べています。サーバー"。
クラブはやや小さく、クラブのメンバーはせいぜい 500 人で、サイトに頻繁にアクセスするメンバーはほとんどいないため、10 分間のタイムアウトが 1 日に複数回発生し、セッション タイムアウトが発生することはほぼ確実です。 60 分に設定されているため、特定の時間にサイトの唯一のユーザーが 10 分間アイドル状態である場合、サイトのセッションをクリアすることはお勧めできません。
最初に考えたのは、SQL セッション ストレージを使用することでした。使ったことはありませんが、存在は知っています。ただし、SQL ストレージが 350 MB に制限されているという注意点があります。これはおそらくサイトが現在必要としている量を超えていますが、将来的には限界に近づく可能性があると考えています。私はセッションに多くのデータを保存するとは思っていません.Paypalとショッピングカートとやり取りするときのいくつかのものだけです.
私たちには無制限のディスク容量があるので、私が考えたもう 1 つの代替案は、カスタムのディスクベースのセッション ストレージ ソリューションを作成することでした。これがSQLよりも良い考えではないかもしれない理由はありますか?
そして最後に、私は完全に壁から離れた「ああ、こんなことを考えているなんて信じられない」というアイデアを思いつきました。それは、すべてのページで定期的に (たとえば、8 分ごとに) AJAX 呼び出しを行うというものでした。サーバーを維持するためだけに、キャッシュされていない軽量の MVC アクションを ping します。これはおそらくうまくいくと思いますが、誰かが次のようなシナリオを除いて:
- ショッピングページに移動し、カートを作成します
- ペイパルに転送されます
- 他に誰もサイトにいないときに、なんらかの理由で 10 分以上 Paypal の画面で過ごす
- 彼らのカートが消えるのを見るために戻ってきます。
この場合、とにかくカートをデータベースに移動するだけです。
それで...考え、コメント、提案はありますか?ホストがこの設定を変更させてくれないことに本当にイライラしており、私の最初の本能は別のホストを見つけることですが、前にも言ったように、クラブはホストに奇妙な愛着を持っており、どこかに移動したくありません.
前もって感謝します!