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 :

Multiples requêtes Ajax et performances


Sujet :

Bibliothèques & Frameworks

  1. #1
    ALkyD
    Invité(e)
    Par défaut Multiples requêtes Ajax et performances
    Bonjour,

    Je vais simplifier à l'extrême le problème que je rencontre. Je développe actuellement une sorte d'explorateur d'images en PHP / Ajax, et la sélection multiple d'images est possible.

    Avec des images sélectionnées, il est possible de les redimensionner ou de créer des vignettes. Pour cela, je clique sur un bouton qui appelle une requête Ajax.

    Si par exemple j'ai 20 images sélectionnées, quelle est la meilleure solution en termes d'optimisation / performance ?
    - Appeler 20 requêtes Ajax vers un script PHP qui redimensionne une à une les images ;
    - Ou appeler une seule requête Ajax (avec en argument la liste des 20 identifiants d'image) vers un script PHP, avec boucle for à l'intérieur de celui-ci.

    J'utilise Mootools comme framework Ajax.

    Merci

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    en terme de temps d'exécution, ça sera (presque) sûrement la 1° solution.
    Ceci dit, pas sûr que la différence soit perceptible ...
    Par contre, la 2° te permettrait de mettre en plus facilement un indicateur de progression (style "1/20 traitée" puis "2/20 traitées" etc.), et de mettre à jour l'affichage au fur et à mesure. Justifié si le traitement de chaque image laisse le temps de la mise à jour (> 1 seconde ?)

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  3. #3
    ALkyD
    Invité(e)
    Par défaut
    Salut,
    Ce n'est pas la 2ème mais la première solution qui permet de mettre à jour en temps réel les images : une fois la requête X finie, l'image X est modifiée dynamiquement dans l'explorateur. Tandis que dans la deuxième solution, on est obligé d'attendre la fin de la grosse requête Ajax pour mettre à jour en même temps les 20 images. Mais dans la première, on doit recharger à chaque requête les librairies et code de base nécessaire, tandis que dans la deuxième, on charge les librairies une bonne fois pour toutes.

    J'avoue que je ne sais pas trop quelle méthode utiliser, sachant que le traitement de redimensionnement pourrait être long (cas des photos lourdes). D'un côté, balancer 20 requêtes HTTP (voire plus, si on sélectionne par exemple 30 images) au serveur ne risque-t-il pas de le faire souffrir ? Et de l'autre côté, attendre une requête de 30 seconde ne risque-t-il pas de freezer la page ?

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par KyD Voir le message
    Ce n'est pas la 2ème mais la première solution qui permet de mettre à jour en temps réel les images : une fois la requête X finie, l'image X est modifiée dynamiquement dans l'explorateur. Tandis que dans la deuxième solution, on est obligé d'attendre la fin de la grosse requête Ajax pour mettre à jour en même temps les 20 images.
    Oui excuse moi : j'ai inversé.
    Correction :
    en terme de temps d'exécution, ça sera (presque) sûrement la 2° solution.
    Ceci dit, pas sûr que la différence soit perceptible ...
    Par contre, la 1° te permettrait de mettre en plus facilement un indicateur de progression (style "1/20 traitée" puis "2/20 traitées" etc.), et de mettre à jour l'affichage au fur et à mesure. Justifié si le traitement de chaque image laisse le temps de la mise à jour (> 1 seconde ?)

    D'un côté, balancer 20 requêtes HTTP (voire plus, si on sélectionne par exemple 30 images) au serveur ne risque-t-il pas de le faire souffrir ?
    Pour les N rechargements nécessaires au lieu d'un, oui.
    Et de l'autre côté, attendre une requête de 30 seconde ne risque-t-il pas de freezer la page ?
    Non, si tu fais l'appel en asynchrone.
    De plus, tu peux quand même gérer une progression, mais c'est plus lourd : mise en place d'une 2° requête Ajax d' "observation" : elle interroge le serveur à fréquence élevée pour récupérer l'état d'avancement (en BDD). Une table peut être mise à jour par le traitement d'images au fur et à mesure de son avancement. C'est cette table que la 2° requete interrogerait pour renseigner l'utilisateur.

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

Discussions similaires

  1. [AJAX] Requêtes AJAX multiples et indépendantes
    Par rota90 dans le forum jQuery
    Réponses: 0
    Dernier message: 11/05/2014, 21h25
  2. [AJAX] Empêcher envoi multiple requêtes ajax
    Par M4kn4sh dans le forum jQuery
    Réponses: 13
    Dernier message: 01/02/2013, 17h05
  3. [AJAX] Pas de données après de multiples requêtes Ajax
    Par M4veR1K dans le forum jQuery
    Réponses: 5
    Dernier message: 23/10/2012, 17h07
  4. Réponses: 0
    Dernier message: 03/01/2012, 22h24
  5. Requête avec une performance minable
    Par Oz-WereWolf dans le forum Oracle
    Réponses: 54
    Dernier message: 13/08/2007, 23h36

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