長時間的使用者會話對於無縫的線上體驗至關重要,尤其是當使用者長時間打開瀏覽器視窗時。然而,延長會話超時等傳統方法通常會損害安全性和效能。
本文提出了一個巧妙的解決方案:使用定時 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
存取會話並簡單地更新「Heartbeat」會話變數:
<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中文網其他相關文章!