Längere Benutzersitzungen sind für ein nahtloses Online-Erlebnis von entscheidender Bedeutung, insbesondere wenn Benutzer Browserfenster für längere Zeit geöffnet lassen. Herkömmliche Methoden wie die Verlängerung von Sitzungszeitüberschreitungen gefährden jedoch häufig die Sicherheit und Leistung.
Dieser Artikel stellt eine subtile Lösung vor: die Verwendung zeitgesteuerter AJAX-Aufrufe, um aktive Sitzungen stillschweigend aufrechtzuerhalten. Dazu gehört das regelmäßige Senden von Anfragen an einen dedizierten Handler, um die Sitzung zu aktualisieren, ohne den Arbeitsablauf des Benutzers zu unterbrechen.
Eine jQuery-Funktion initiiert in regelmäßigen Abständen (z. B. alle 5 Minuten) einen AJAX-Aufruf an einen SessionHeartbeat.ashx
-Handler:
<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>
Das SessionHeartbeatHttpHandler
(unten) verwendet IRequiresSessionState
, um auf die Sitzung zuzugreifen und aktualisiert einfach eine „Heartbeat“-Sitzungsvariable:
<code class="language-csharp">public class SessionHeartbeatHttpHandler : IHttpHandler, IRequiresSessionState { public void ProcessRequest(HttpContext context) { context.Session["Heartbeat"] = DateTime.Now; } }</code>
Registrieren Sie den Handler in web.config
:
<code class="language-xml"><httphandlers> <add path="SessionHeartbeat.ashx" type="SessionHeartbeatHttpHandler" validate="false" verb="GET,HEAD" /> </httphandlers></code>
Für ein verbessertes Benutzererlebnis fügen Sie mithilfe von CSS und HTML eine subtile visuelle Herzschlaganimation hinzu:
<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>
Die beatHeart
-Funktion (unten) steuert das Ein-/Ausblendverhalten der Animation:
<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>
Dieser Ansatz bietet eine reibungslose, nicht aufdringliche Möglichkeit, ASP.NET-Sitzungen aufrechtzuerhalten und sorgt so für ein positives Benutzererlebnis auch bei längerer Inaktivität.
Das obige ist der detaillierte Inhalt vonWie kann ich ASP.NET-Sitzungen am Leben halten, ohne die Benutzererfahrung zu beeinträchtigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!