Précédent   Forum du club des développeurs et IT Pro > Webmasters - Développement Web > AJAX
AJAX Forum sur la programmation AJAX. Avant de poster : Cours AJAX, FAQ AJAX, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 12/12/2012, 12h04   #1
atmeee
Invité de passage
 
Inscription : décembre 2012
Messages : 1
Détails du profil
Informations forums :
Inscription : décembre 2012
Messages : 1
Points : 0
Points : 0
Par défaut Nombre de requêtes simultanées par page

Bonjour,

Je développe actuellement une application où, pour améliorer la vitesse de chargement de mes pages, j'ai décidé de charger des blocs de contenu de façon asynchrone en utilisant ajax.

Pour cela, je fait un simple appel ajax :

Code :
1
2
3
4
5
6
7
8
9
10
11
<script type="text/javascript">
 
    $(window).load(function(){
 
        $.ajax({
            url: "/maPpage"
            }).done(function ( data ) {
                $('#id').html(data);
            });
 
    });

Je fait ceci pour plusieurs blocs de contenu. Mon problème est le suivant : je dispose d'un hébergement OVH 'Perso' (mutualisé), et j'ai l'impression que plus le nombre de ces requêtes AJAX au chargement de la page est grand, plus chaque requête met de temps à se charger. Exemple :
- premier bloc : 10 sec
- deuxième bloc : 30 sec
- troisième bloc : 1minute

Si je fais le même appel ajax avec un .click(), chaque bloc se charge beaucoup plus vite (une seconde)...

Je ne sais pas d'où ça vient :colere2: Serait-ce OVH qui limite le nombre de connexion simultanées d'un utilisateur sur un serveur ? Ou est-ce que ma syntaxe n'est pas optimisée ?

Merci pour vos éclaircissement... je craque ! ^^

PS : un petit dessin vaut mieux que de grandes explications (cliquer 1 fois sur l'image pour agrandir) :

atmeee est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2012, 14h27   #2
Bovino
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 18 070
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 42
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 18 070
Points : 64 461
Points : 64 461
Non, c'est le navigateur qui bloque le nombre de requêtes simultanées. Généralement, le nombre maximal est de trois.

Ceci dit,
Citation:
pour améliorer la vitesse de chargement de mes pages, j'ai décidé de charger des blocs de contenu de façon asynchrone en utilisant ajax
je vois mal en quoi multiplier le nombre d'appels HTTP peut améliorer la vitesse de chargement...
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 23h42   #3
christele_r
Membre Expert
 
Avatar de christele_r
 
Femme Christele Rubneau
Inscription : novembre 2009
Messages : 1 051
Détails du profil
Informations personnelles :
Nom : Femme Christele Rubneau
Âge : 40
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2009
Messages : 1 051
Points : 1 426
Points : 1 426
Bonjour,
Tu devrais te mettre à notre place, comment répondre a pareille question ?
lorsque tu exécutes un module pur de JavaScript,
par exemple
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
<script type="text/javascript">
var le1 = setInterval(Lajax(10),5000);
var le2 = setInterval(Lajax(20),10000);
function Lajax(param1)
{
  var xx;
  if (window.XMLHttpRequest){ xx = new XMLHttpRequest();}
  else if (window.ActiveXObject) {xx = new ActiveXObject('Microsoft.XMLHTTP');}
  else {
    alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    xx = false;   }
  xx.open('POST',"unPHP.php",true);
  xx.onreadystatechange = function()
  {
      if (xx.readyState == 4 && xx.status==200)
      {
          if (document.getElementById) 
          {    
          document.getElementById('LeTexte').innerHTML=''+xx.responseText+'';
          }     
      }
  }
  xx.setRequestHeader('Content-type','application/x-www-form-urlencoded');
  xx.send('param1='+param1);                  
}
</script>
Le PHP unPHP.php sur le serveur est appelé sans arrêt , et cela ne pose aucun problème ! car tout dépend de la taille de ce PHP et de se qu'il fait !
Alors précise
A++
Christele
christele_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2012, 09h30   #4
benjyyyyy
Futur Membre du Club
 
Inscription : juin 2008
Messages : 29
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : juin 2008
Messages : 29
Points : 17
Points : 17
En effet si tu veux plus de rapidité dans ton chargement c'est vrai qu'il n'y a pas trop de logique de découper ta page en sous requête AJAX pour charger des morceaux de ta page. Après si effectivement tu as une partie de ta page qui a un gros morceau à charger et que c'est pas primordial pour l'utilisateur dans la première seconde de sa visite, tu peux taper un appel AJAX à ce moment pour le charger en asynchrone et pas bloquer le reste de la page juste pour cette partie. Mais sinon faire n requête pour charger ta page te fera pas aller plus vite, surtout comme le dit Bovino les navigateurs limites le nombres de requêtes.
Après par contre lors de ta navigation tu peux choisir de naviguer en AJAX pour recharger juste ce dont tu as besoin.
benjyyyyy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2012, 09h41   #5
christele_r
Membre Expert
 
Avatar de christele_r
 
Femme Christele Rubneau
Inscription : novembre 2009
Messages : 1 051
Détails du profil
Informations personnelles :
Nom : Femme Christele Rubneau
Âge : 40
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2009
Messages : 1 051
Points : 1 426
Points : 1 426
Citation:
Envoyé par benjyyyyy Voir le message
Tu peux taper un appel AJAX à ce moment pour le charger en asynchrone et ne pas bloquer le reste de la page
MDR ... tu ne risque pas, la page s'affiche toujours en entier puisque JavaScript n'est lancé que lorsque le HTML est chargé complètement chez le visiteur.
La notion Asynchrone/Synchrone ne jouant que pour la requête AJAX !
A++
Christele
christele_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2012, 09h59   #6
benjyyyyy
Futur Membre du Club
 
Inscription : juin 2008
Messages : 29
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : juin 2008
Messages : 29
Points : 17
Points : 17
Oui donc si tu veux charger un morceau de ta page en asynchrone, tu poses un div vide, et quand c'est chargé tu charge ton div...en asynchrone ^^
benjyyyyy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2012, 10h25   #7
Bovino
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 18 070
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 42
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 18 070
Points : 64 461
Points : 64 461
Si tu veux optimiser l'affichage de la page, tu peux passer par flush et ob_ flush en PHP, mais AJAX ne fera qu'alourdir la chose...
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2012, 15h37   #8
andry.aime
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 6 334
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 6 334
Points : 9 923
Points : 9 923
Citation:
Envoyé par christele_r Voir le message
MDR ... tu ne risque pas, la page s'affiche toujours en entier puisque JavaScript n'est lancé que lorsque le HTML est chargé complètement chez le visiteur.
Euh:
Code html :
1
2
3
4
5
6
7
8
9
10
<html>
	<head>
		<title>test js</title>
	</head>
	<body>
		<div>Affiche 1</div>
		<script type="text/javascript">alert('fermer avant de continuer le chargement')</script>
		<div>Affiche 2</div>
	</body>
</html>
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2012, 16h00   #9
christele_r
Membre Expert
 
Avatar de christele_r
 
Femme Christele Rubneau
Inscription : novembre 2009
Messages : 1 051
Détails du profil
Informations personnelles :
Nom : Femme Christele Rubneau
Âge : 40
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2009
Messages : 1 051
Points : 1 426
Points : 1 426
Arh... un comble je vivais depuis xx années avec cette idée préconçue

Mille escuses a vous tous, et merci a toi , au moins je n'oublierais pas

A++
Christele
christele_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 07h00.


 
 
 
 
Partenaires

Hébergement Web