IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques & Frameworks Discussion :

Freeze de la page après une infinité d'appel Ajax


Sujet :

Bibliothèques & Frameworks

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2007
    Messages : 30
    Par défaut Freeze de la page après une infinité d'appel Ajax
    Bonjour,

    Je suis actuellement en train de développer un chat old-school type caramail, mais en faisant l'impasse sur Java, lui préférant les technologies web "récentes".

    Ainsi, j'utilise le framework prototype pour tout ce qui est appel AJAX.

    Pour récupérer les informations, je fais un Ajax.PeriodicalUpdater toutes les secondes, avec un onSuccess qui appelle une fonction de gestion de tous les retours (format JSON).

    Tout fonctionne à peu près bien (en version BETA encore, donc y'a des choses à mettre en place). Mais si on laisse le tchat tourné pendant longtemps (2h ou plus), et bien la page freeze. Sous Chrome, on voit que l'onglet utilise 100% du CPU, et au bout d'un moment (de l'ordre de plusieurs dizaines de secondes), tout rentre dans l'ordre, et le tchat est à nouveau opérationnel. Sous Firefox, on reçoit le message typique du "Arreter le script", et souvent, ca fait planter le navigateur.

    Pour la démo, le tchat est disponible ici, avec le code javascript disponible à la lecture : http://www.kraml.fr

    Merci d'avance pour vos idées,

    Cordialement,
    TyR.

  2. #2
    Membre Expert
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Par défaut
    Bonjour,

    C'est un peu compliqué de lire tes 2000 lignes de javascript pour chercher un ralentissement qui se produit au bout de 2h...

    Essaye de passer par le profiler de firebug pour voir là où ça pourrait coincer.

    Complètement à part, et sans vouloir lancer une discussion sans fin qui n'aurait pas sa place dans le forum, quand tu dis que tu préfères à java des technologies récentes pour le web, c'est très réducteur: java ne se limite pas aux applets. Dis plutôt que tu ne veux pas imposer d'activeX

    Et sinon bravo pour cette béta, je vois qu'un gros travail est derrière tout ca

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2007
    Messages : 30
    Par défaut
    Bonjour,

    Merci pour ta réponse. Effectivement, le javascript fait son petit poids ^^;

    Si tu cherches dans le code, c'est que tu as peut être une idée sur le genre d'appel qui pourrait ralentir le programme. Si tel est le cas, peux-tu me donner les types d'appel à chercher, je trouverais rapidement je pense.

    Ce qui m'étonne en fait, c'est que l'execution est censé être en asynchrone, donc je ne voies pas ce qui pourrait faire freezer ou donner l'erreur sous Firefox qui dit que le script est trop long.

    Le plus étonnant étant que ce problème se produit surtout lorsqu'on est inactif, si on utilise le tchat pendant plusieurs heures, on n'a pas forcément de problèmes de ce genre :/

    Encore merci,

    Cordialement,
    TyR.

    EDIT :

    Bon, apparement, le problème peut survenir aussi pendant l'utilisation.
    Si j'ai bien compris, la fenêtre qui dit que le script ne répond pas provient du fait que le script met trop de temps pour envoyer une réponse.

    Mais je pensais que le mode asynchrone permettait d'éviter ça.

    Me conseilleriez-vous de passer le délai de l'Updater d'1 à 2 secondes ?

    Merci d'avance,
    Cdlt,
    TyR.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2007
    Messages : 30
    Par défaut
    UPDATE :

    Bonjour,

    La situation se reproduisant régulièrement, j'ai plus d'informations sur les circonstances qui permettent de reproduire le problème.

    En laissant la fenêtre ouverte, au premier plan, je reçois toujours tous les messages. Au bout de 2h, j'ai toujours les messages qui s'affichent.
    Par contre, si je clique sur la page n'importe où, il se met à réflechir, le CPU de l'onglet passe à 100% pendant plusieurs dizaines de secondes.

    J'ai donc 2 pistes :
    - Les listeners de prototype se mettent en état "idle" tant qu'il ne se passe rien et reprenne du service en cas d'action de l'utilisateur
    - Un système de swap du javascript

    Bien sûr, mes connaissances sur les sujets ne sont pas assez poussés, donc ces pistes restent des hypothèses.

    Si quelqu'un peut m'éclairer, ou m'aider à trouver un moyen de confirmer/infirmer une des hypothèses, je lui en serais très reconnaissant

    Cordialement,
    TyR.

Discussions similaires

  1. [AJAX] Rafraichissement d'une page après une requête
    Par segning dans le forum jQuery
    Réponses: 0
    Dernier message: 08/04/2013, 03h12
  2. afficher plusieurs pages apres une requete
    Par coppin dans le forum Langage
    Réponses: 4
    Dernier message: 11/01/2013, 14h57
  3. Ouvrir une page après une petite animation
    Par JeanMarc_T2k dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 10/05/2010, 13h53
  4. rafraichir une page après une action
    Par jamesleouf dans le forum Struts 1
    Réponses: 1
    Dernier message: 25/03/2009, 13h22
  5. ouvrir une autre page après une action clavier
    Par Jahjouh dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 17/06/2008, 16h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo