長時間のユーザー セッションは、特にユーザーがブラウザ ウィンドウを長時間開いたままにする場合、シームレスなオンライン エクスペリエンスにとって不可欠です。ただし、セッション タイムアウトの延長などの従来の方法では、セキュリティとパフォーマンスが損なわれることがよくあります。
この記事では、時間指定された AJAX 呼び出しを使用して、アクティブなセッションをサイレントに維持するという微妙な解決策を紹介します。 これには、ユーザーのワークフローを中断することなく、専用のハンドラーにリクエストを定期的に送信し、セッションを更新することが含まれます。
jQuery 関数は、一定の間隔 (例: 5 分ごと) で SessionHeartbeat.ashx
ハンドラーへの AJAX 呼び出しを開始します。
<code class="language-javascript">function setHeartbeat() { setTimeout("heartbeat()", 5*60*1000); // Every 5 minutes } function heartbeat() { $.get( "/SessionHeartbeat.ashx", null, function(data) { // Session heartbeat logic (optional visual cue) setHeartbeat(); }, "json" ); }</code>
SessionHeartbeatHttpHandler
(以下) は IRequiresSessionState
を利用してセッションにアクセスし、単に「ハートビート」セッション変数を更新します。
<code class="language-csharp">public class SessionHeartbeatHttpHandler : IHttpHandler, IRequiresSessionState { public void ProcessRequest(HttpContext context) { context.Session["Heartbeat"] = DateTime.Now; } }</code>
ハンドラーを web.config
に登録します:
<code class="language-xml"><httphandlers> <add path="SessionHeartbeat.ashx" type="SessionHeartbeatHttpHandler" validate="false" verb="GET,HEAD" /> </httphandlers></code>
ユーザー エクスペリエンスを向上させるには、CSS と HTML を使用して微妙な視覚的なハートビート アニメーションを追加します。
<code class="language-html"><div class="heartbeat">♥</div></code>
<code class="language-css">.heartbeat { position: absolute; display: none; margin: 5px; color: red; right: 0; top: 0; }</code>
beatHeart
関数 (下記) は、アニメーションのフェードイン/フェードアウト動作を制御します。
<code class="language-javascript">// Animate the heartbeat 'times' times function beatHeart(times) { var interval = setInterval(function () { $(".heartbeat").fadeIn(500, function () { $(".heartbeat").fadeOut(500); }); }, 1000); // Beat every second // Clear interval after 'times' beats (with 100ms buffer) setTimeout(function () { clearInterval(interval); }, (1000 * times) + 100); }</code>
このアプローチは、ASP.NET セッションを維持するためのスムーズで非侵入的な方法を提供し、長期間非アクティブな場合でも良好なユーザー エクスペリエンスを保証します。
以上がユーザー エクスペリエンスに影響を与えずに ASP.NET セッションを維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。