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

AJAX Discussion :

Requête Ajax toutes les 5 secondes : trop lourd ?


Sujet :

AJAX

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut Requête Ajax toutes les 5 secondes : trop lourd ?
    Bonjour,

    j'ai un site hébergé en mutualisé chez OVH. J'ai récupéré un code qui fait une requête Ajax toutes les 5 secondes depuis ce site vers l'url d'une WebRadio.
    Cette radio met à disposition dans un fichier json ce qu'elle diffuse en direct. Si le contenu est modifié on récupère le contenu json pour le traiter.
    Etc. toutes les 5 secondes

    - Euh ce n'est pas trop lourd comme manière de procéder ?

    A votre avis,
    - OVH acceptera celle fréquence sur un mutualisé ?
    - La radio acceptera d'être interrogé à cette fréquence ?


    Merci pour vos infos !
    PAul

  2. #2
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Citation Envoyé par Mister Paul Voir le message
    J'ai récupéré un code qui fait une requête Ajax toutes les 5 secondes depuis ce site vers l'url d'une WebRadio.

    […]

    A votre avis,
    - OVH acceptera celle fréquence sur un mutualisé ?
    OVH ne verra rien : les requêtes ajax sont émises par les navigateurs de tes utilisatrices et utilisateurs. Du moins si tu parles bien d’ajax, car ajax c’est JavaScript, et il n’y a pas de JavaScript sur les serveurs d’OVH (à ma connaissance).

    - La radio acceptera d'être interrogé à cette fréquence ?
    C’est un autre problème. Si le code que tu as trouvé fonctionne, cela signifie qu’il utilise la mécanique CORS, et ainsi l’adresse de ton site apparaît nécessairement dans l’en-tête Origin des requêtes Ajax.

    Si ton site a une bonne fréquentation, et si la web radio implémente une protection anti-DDoS (par exemple via CloudFlare), il y a une possibilité que ton domaine finisse en liste noire. C’est juste une hypothèse.

    As-tu essayé de déterminer approximativement à quelle fréquence le JSON est mis à jour ? Ça pourrait être bien plus de 5 secondes.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Citation Envoyé par Watilin Voir le message
    As-tu essayé de déterminer approximativement à quelle fréquence le JSON est mis à jour ? Ça pourrait être bien plus de 5 secondes.
    C'est vraiment toutes les 5 secondes que l'Ajax vient voir si le json a été modifié par la radio.
    C'est systématique. Un peu force brute, non?...

    J'aurais préféré que l'Ajax vienne à l'heure de fin du morceau (on a cette info dans le json) voir si le json a été modifié (= s'il indique le nouveau morceau) et que s'il ne l'a pas été (des fois il y a ± 30 secondes de décalage dans la mise à jour du json) il repasse toutes les 5 secondes checker la mise à jour. Et seulement dans ce cas-là...
    Mais ça voudrait dire récupérer des variables ("end_at"="2018-07-22T07:14:53+0000") et comparer avec l'heure actuelle.

    Il faudrait que je questionne directement la radio.
    Ceci dit le json est fait pour communiquer l'info de ce qu'il diffusent. Donc il est là pour être interrogé.
    S'ils acceptent les 5 secondes ce n'est peut-être pas la peine de développer plus fin... (?)

  4. #4
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Citation Envoyé par Mister Paul Voir le message
    C'est vraiment toutes les 5 secondes que l'Ajax vient voir si le json a été modifié par la radio.
    C'est systématique. Un peu force brute, non?...
    Oui et non, ça dépend du contexte. Entre autres, la latence du réseau, mais ça c’est difficile à prévoir, et la capacité du serveur qui sert le fichier JSON. Si tu constates qu’il met souvent plus d’une seconde à répondre, il vaut mieux diminuer la fréquence des requêtes.

    À toi de trouver un équilibre entre le confort d’utilisation – quand les choses ne se passent pas bien, quelle durée de silence est acceptable — et la « légèreté » des requêtes.

    J'aurais préféré que l'Ajax vienne à l'heure de fin du morceau […]
    Mais ça voudrait dire récupérer des variables ("end_at"="2018-07-22T07:14:53+0000") et comparer avec l'heure actuelle.
    C’est tout à fait faisable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    let end_at = json. ... .end_at;
    let endDate = new Date(end_at);
    let timeDiff = endDate - Date.now();
    Si tu as du mal à extraire l’information end_at, montre-moi la structure du JSON et je te donnerai un coup de main.

    timeDiff te donne la différence en millisecondes entre l’heure de fin de morceau et l’heure actuelle. Si c’est positif, la fin du morceau est dans le futur ; si c’est négatif, elle a déjà eu lieu.
    Tu pourrais utiliser setTimeout avec par exemple comme délai timeDiff - 5000 pour lancer une requête 5 secondes (5 000 millisecondes) avant la fin du morceau.

    Il faudrait que je questionne directement la radio.
    C’est une bonne idée, et ça pourrait te donner d’autres informations utiles

    S'ils acceptent les 5 secondes ce n'est peut-être pas la peine de développer plus fin... (?)
    C’est une question de parcimonie. Des requêtes plus fréquentes que nécessaire, c’est une consommation d’énergie superflue. N’oublie pas que chaque requête fait fonctionner tout un tas de machine dans le grand Internet, des multiplexeurs, des routeurs de bordure, des répétiteurs, éventuellement des proxys, et aussi les boîtes noires de notre copain Bernard Cazeneuve. Bref, l’optimisation, c’est aussi un peu de l’écologie
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Citation Envoyé par Watilin Voir le message
    Si tu as du mal à extraire l’information end_at, montre-moi la structure du JSON et je te donnerai un coup de main.
    Merci pour ta proposition.

Discussions similaires

  1. requête aléatoire toutes les X secondes
    Par claire34 dans le forum Requêtes
    Réponses: 1
    Dernier message: 22/09/2013, 16h10
  2. Réponses: 11
    Dernier message: 22/12/2010, 09h45
  3. Réponses: 4
    Dernier message: 06/11/2007, 11h44
  4. [AJAX] Centraliser les requêtes AJAX afin d'avoir un seul appel
    Par Mike_69 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 29/03/2007, 16h51
  5. [MySQL] Requête trop lourde?
    Par gb-ch dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 17/01/2007, 14h05

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