sparh Posté 29 Mars 2011 Posté 29 Mars 2011 (modifié) Bonjour, je cherche à recharger certains contenus de mes pages via javascript. Au début j'utilisais load de jquery avec un settimout puis je me suis mis au setinterval mais peux être y'a t'il de meilleure technique ? D'autant que certains de mes utilisateurs se plaignent de ralentissement. Merci d'avance pour vos conseils Modifié 29 Mars 2011 par sparh
MarvinLeRouge Posté 30 Mars 2011 Posté 30 Mars 2011 Salut, 1) Vérifie que tu fais bien juste le nombre de requêtes nécessaire. Dans ces cas là, quand on n'est pas habitué, on lance souvent plusieurs intervalles simultanés sans s'en rendre compte 2) Autant que possible, fais une seule requête toutes les x secondes, avec un contenu structuré dans la réponse, pour pouvoir mettre à jour tous les contenus de ta page en même temps.
sparh Posté 31 Mars 2011 Auteur Posté 31 Mars 2011 (modifié) Salut et merci, mais la tu me parle des requêtes envoyées par php ce qui est aussi important. Moi ce que je cherche à optimiser c'est le javascript coté client. Donc je me demandais pour une boucle infinie (exemple : actualisation de certains contenus de la page toutes les 10s) : 1 - Entre settimeout et setinterval lequel est le plus adapté, moins consommateur de ressource ? 2 - Y'as t'il d'autre technique pour raffraichir automatiquement certains contenu de la page ? Merci d'avance Modifié 31 Mars 2011 par sparh
MarvinLeRouge Posté 1 Avril 2011 Posté 1 Avril 2011 Non non, je te parlais bien du javascript côté client : quand tu veux mettre à jour ton contenu, tu effectues en javascript une requête serveur, c'est de ces requêtes là que je te parlais (pas de requêtes sql). Je pense qu'il vaut mieux utilisé setInterval afin de ne pas recalculer inutilement des choses, mais faire également très attention au fait de ne pas redéclencher des setInterval en boucle (sinon ça fait boum très vite), et à grouper autant que possible les requêtes, afin de bien faire TOUT ce qui doit être fait toutes les secondes dans une requête, TOUT ce qui doit être fait toutes les 3 secondes dans une requête, etc ...
sparh Posté 1 Avril 2011 Auteur Posté 1 Avril 2011 Salut, merci pour ta réponse je commence un tout petit peu à y voir plus clair. Donc si je comprends bien il faut limiter le nombre de requête faites par $.ajax ou $.get ? Déjà j'ai au maximum 2 setinterval par page. Voilà comment j'ai fait ma fonction : function mise_a_jour_general(){ $.ajax({ type: "GET", url: "ajax-messagerie.php?ajax=oui", success:function(data){ var message_ajax = $("#messagerie_ajax"); message_ajax.empty(); message_ajax.append(data); } }); type: "GET", url: "ajax_notification.php", success:function(data){ var message_ajax = $("#notification_panel_liste"); message_ajax.empty(); message_ajax.append(data); } }); $.ajax({ type: "GET", url: "ajax_notification.php?nombre=oui", success:function(data){ var message_ajax = $("#notification_panel_nombre"); message_ajax.empty(); message_ajax.append(data); } }); $.ajax({ type: "GET", url: "ajax-tchat.php?menu_horizontal=oui", success:function(data){ var message_ajax = $("#tchat_ajax"); message_ajax.empty(); message_ajax.append(data); //$("#panel_vertical_tchat").adjustPanel(); } }); $.ajax({ type: "GET", url: "ajax-tchat.php?menu_horizontal=non", success:function(data){ var message_ajax = $("#tchat_content"); message_ajax.empty(); message_ajax.append(data); } }); $.get( "ajax-dernieres-news.php", {}, function(data) { $('#records').empty(data).find("div"); $('#records').append(data).find("div").vTicker({ speed: 500, pause: 3500, showItems: 1, animation: 'fade', mousePause: true, height: 25, direction: 'down' }); } ); }var boucle_generale = setInterval(mise_a_jour_general, 19000); // refresh every 1000 milliseconds De cette manière je peux facilement arrêter ou relancer la fonction avec clearInterval. Est ce que je procède correctement ? Merci d'avance
MarvinLeRouge Posté 2 Avril 2011 Posté 2 Avril 2011 Comme ça, hors contexte, ça a l'air correct. Sinon, si tu peux te débrouiller pour faire une seule requête au lieu de 6, ce serait encore mieux : il te suffirait d'une page genre "ajax-content.php" qui fasse la même chose que les 6 autres réunies, qui renvoie un résultat structuré (un objet json par exemple), avec une fonction de retour qui traiterait les différentes zones de la page en une fois.
sparh Posté 4 Avril 2011 Auteur Posté 4 Avril 2011 Ok merci pour tes conseils, je vais continuer dans ce sens.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant