|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Étudiant Inscription : juillet 2011 Messages : 6 ![]() |
bonjour,
Je suis exactement dans le même cas que ici, et j'utilise AJAX avec jQuery(une librairie js) pour faire mon chat. Mais le problème du rafraichissement toute les secondes est toujours, car bien que cela soit bien moins visible, on envoi quand même toute les secondes une requête vers le serveur pour savoir s'il y a un nouveau message et ça ralentit la bande passante. J'ai un peu analysé le comportement de facebook avec un HTTP trackeur et j'ai remarqué que facebook envoyait *une* seule requête qui retournait une réponse uniquement quand il y avait un nouveau message Je ne vois pas du tout comment coder ça coté serveur avec PHP, mais facebook utilise apparemment une autre technologie car la page appelé pour la vérification des messages n'a pas d'extension.. Quelqu'un pourrai m'expliquer comment ils font ? |
|
|
00
|
|
|
#2 | ||
|
Membre éclairé
![]() Inscription : mars 2009 Messages : 228 ![]() |
Bonsoir,
Une bonne pratique consiste à ne pas mettre d'extension dans les URL afin de pouvoir changer de technologie. Il n'est pas indispensable d'avoir une URL .php pour interpréter une requête à l'aide de PHP (voir par exemple apache mod_rewrite, utilisé par exemple dans Zend). J'avais jeté un oeil sur le comportement de facebook il y a quelques temps. Avant, si j'ai bien vu, ils requêtaient approximativement toutes les 5 secondes. Là, on dirait qu'ils sont plus sioux. Si je crois Firebug, ils requêtent toutes les 20 secondes et attendent jusqu'à 20 secondes côté serveur avant de lâcher la connexion. S'il n'y a pas de message à envoyer au client pendant 20 secondes, ils attendent sagement avant de dire : Il y a rien. S'il y a un message à envoyer, il l'envoie directement. Je doute que ça soit préférable pour le serveur (beaucoup de connexion ouvertes), en tout cas, ça permet de signaler quasi-instantanément les nouveaux messages sans requêter le serveur toutes les secondes s'il ne se passe rien. Après, j'ignore quelle technologie ils utilisent (j'ai cru lire C++, mais je n'en suis pas sûr) et j'ignore si ça serait meilleur pour la bande passante. Pour faire la même chose en PHP, je pense qu'il suffit de jouer avec des sleep pour ne pas lâcher la connexion trop tôt : Code :
Bye |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com