Aller au contenu

Recharger certains contenu de la page tous les X secondes


sparh

Sujets conseillés

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é par sparh
Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

Posté (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é par sparh
Lien vers le commentaire
Partager sur d’autres sites

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 ...

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...