Prolonger les sessions ASP.NET avec AJAX
Le maintien de sessions ASP.NET actives est vital pour une expérience utilisateur fluide. Une méthode robuste utilise des appels AJAX pour actualiser périodiquement la session, évitant ainsi les délais d'attente.
Implémentation d'un battement de cœur de session AJAX
Cette approche utilise un appel jQuery AJAX, récurrent (par exemple toutes les 5 minutes), vers un gestionnaire HTTP dédié : "SessionHeartbeat.ashx." Le seul objectif de ce gestionnaire est la maintenance de session. Le code C# de ce gestionnaire est :
<code class="language-csharp">public class SessionHeartbeatHttpHandler : IHttpHandler, IRequiresSessionState { public bool IsReusable { get { return false; } } public void ProcessRequest(HttpContext context) { context.Session["Heartbeat"] = DateTime.Now; } }</code>
La fonction JavaScript côté client correspondante est :
<code class="language-javascript">function setHeartbeat() { setTimeout("heartbeat()", 5*60*1000); // Every 5 minutes } function heartbeat() { $.get( "/SessionHeartbeat.ashx", null, function(data) { setHeartbeat(); }, "json" ); }</code>
Amélioration de l'interface utilisateur
Pour un retour visuel (et une maintenance continue de la session), nous pouvons ajouter du CSS et du HTML :
<code class="language-javascript">function beatHeart(times) { var interval = setInterval(function () { $(".heartbeat").fadeIn(500, function () { $(".heartbeat").fadeOut(500); }); }, 1000); // Beat every second // Clear interval after 'times' iterations (with 100ms buffer) setTimeout(function () { clearInterval(interval); }, (1000 * times) + 100); } /* HEARBEAT CSS */ .heartbeat { position: absolute; display: none; margin: 5px; color: red; right: 0; top: 0; }</code>
Avantages des battements de cœur de session AJAX
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!