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

ASP.NET Discussion :

Connaitre le débit du client dans l'évènement page_load.


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 199
    Points : 70
    Points
    70
    Par défaut Connaitre le débit du client dans l'évènement page_load.
    Bonjour,

    J'ai une application ASP .NET
    Quand j'ai une bonne connexion, tout roule
    Si la connexion n'est pas super, la première page est trés longue à charger.

    Je voudrais savoir si au moment de la préparation du chargement de la page (evènement load), si il y a moyen de connaitre la qualité de la connexion du client pour choisir si je preload un certain nombre de chose ou non.

    Je pense que ce n'est pas possible mais je pose la question à tout hasard s'il y aurais 2 ou 3 astuces qui me permettrait d'avoir des informations sur le client pour prendre une décision.

    Par avance, merci pour vos retour
    Sylo

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    A ma connaissance ça n'existe pas mais je pense que tu prends le problème à l'envers. (surtout que le temps perdu pour tester la qualité de la ligne se repercutera sur tout le monde)

    Tu devrais plutot faire en sorte d'optimiser ton code pour avoir une réponse rapide et eventuellement faire des callback (call ajax) pour récupérer certaines données plus lourde.
    De cette façon tous le monde à une réponse rapide et le callback peut se faire de manière asynchrone.

    A+

  3. #3
    Membre chevronné

    Profil pro
    Chef de Projet / Développeur
    Inscrit en
    Juin 2002
    Messages
    599
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de Projet / Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2002
    Messages : 599
    Points : 2 024
    Points
    2 024
    Par défaut
    Je ne vois pas comment se serait possible : le Page_Load est coté serveur et il n'y pas pas d'échange avec le client à ce moment là.

    Si la page est très lourde et incompressible, le mieux est, je pense, d'envoyer une page réduite avec une animation d'attente, qui dès qu'elle sera affichée fera un appel Ajax pour aller chercher le reste de façon dynamique :
    1) les connexions rapides ne verront quasi pas la différence
    2) les connexions lentes auront une animation ; ce qui évitera de leur donner l'impression qu'il ne se passe rien.

    En faisant le delta de temps entre le Page_Load et la réception de la requête Ajax, il te sera peut-être possible de te faire une idée de la qualité de la ligne.
    --
    vanquish

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 199
    Points : 70
    Points
    70
    Par défaut
    J'ai trouvé un code js qui me permet de télécharge une image et de calculer le temps pour télécharger l'image
    voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    function cConnexion() {
        this.ImgTest = null;
        this.TxtSrc = "/externe/img/test_connexion.png";
        this.nbOctetImg = 147456;
        this.DelaiMax = 10000;
        this.TimerDebut = 0;
        this.TimerFin = 0;
     
        this.debit = 0;
        this.niveau = -1;
     
        this.mTest = function () {
            this.ImgTest = new Image();
            this.TimerDebut = new Date();
            this.ImgTest.src = this.TxtSrc + "?dummy=" + this.TimerDebut;
            this.TimerDebut = this.TimerDebut.getTime();
            this.mVerif();
        }
     
        this.mVerif = function () {
            this.TimerFin = new Date();
            this.TimerFin = this.TimerFin.getTime();
            if (this.ImgTest.complete) {
                this.debit = this.nbOctetImg / (this.TimerFin - this.TimerDebut);
                if (this.debit > 0 && this.debit <= 6) this.niveau = 2;
                if (this.debit > 6 && this.debit <= 20) this.niveau = 3;
                if (this.debit > 20 && this.debit <= 500) this.niveau = 4;
                if (this.debit > 500) this.niveau = 5;
            }
            else {
                if (this.TimerFin - this.TimerDebut > this.DelaiMax) {
                    //fin
                    this.niveau = 1;
                }
                else {
                    var Me = this;
                    window.setTimeout(function () { Me.mVerif(); }, 20);
                }
            }
     
        }
    }
    Au démarrage de mon appli, si coté serveur, je n'ai pas encore de valeur pour le débit je renvoi sur une page particulière qui calcule le débit et qui à la fin redirige sur la page appelante
    Une fois le calcul de débit fait, je l'enregistre sur le serveur (via un callback ajax)

    De cette manière j'ai une évaluation du débit que je peux utiliser pour construire mes pages.

    Je l'ai implémenté en beta test et cela semble rouler...

    Qu'en pensez vous ?

    Sylo

  5. #5
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par olysmar2 Voir le message
    Qu'en pensez vous ?
    Comme déjà indiqué c'est totalement inutile. Tes pages doivent être optimisées pour tout le monde, le principe du Web c'est de servir les pages aussi rapidement que possible. On s'embête déjà assez à avoir des versions différentes de javascript et/ou de css par rapport aux navigateurs, si en plus il faut s'embêter à tenir compte de la bande passante d'un client on ne s'en sort plus En plus cette indication de débit n'est pas très parlante, puisque s'agissant d'internet le routage veut que les requêtes d'un client ne passeront pas toujours pas la même route. Donc en gros, une requête peut paraitre lente si la route empruntée est chargée, mais la prochaine sera peut-être rapide si elle prend une route moins encombrée... Pour se faire une idée, il faudrait faire une moyenne du débit sur plusieurs minutes, du coup on ralentit tout le monde juste pour ca.

    Personnellement je pars du principe que tous mes clients ont une bande passante pourrie. Le but du jeu c'est d'avoir le meilleur temps de chargement possible dans ces conditions. Ceux qui ont une bonne bande passante voire un lien MPLS ou autre, ben tant mieux pour eux, ce sera d'autant plus rapide

    Et il y a des techniques pour accélérer le chargement d'une page : CDN, Cache, Compression, Minification, Ajax, async/await...
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

Discussions similaires

  1. Connaitre l'IP du client dans mon serveur
    Par st20085 dans le forum Services Web
    Réponses: 19
    Dernier message: 21/10/2009, 17h24
  2. utilisation de guillemets dans un évènement HTML
    Par giminik dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 28/07/2005, 16h13
  3. [OC4J 9.0.2] plusieurs modules clients dans application.xml
    Par Mokhtar BEN MESSAOUD dans le forum Autres
    Réponses: 2
    Dernier message: 11/02/2005, 10h18
  4. Connaitre le nombre de caractère ";" dans un champ
    Par PrinceMaster77 dans le forum ASP
    Réponses: 3
    Dernier message: 25/11/2004, 17h36
  5. Réponses: 2
    Dernier message: 12/10/2004, 13h04

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