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

C# Discussion :

Premier accès à une URL XML lent


Sujet :

C#

  1. #1
    Nouveau membre du Club Avatar de Picsonald
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 23
    Points : 39
    Points
    39
    Par défaut Premier accès à une URL XML lent
    Bonjour à tous !

    Je viens vers vous car je me heurte à un problème qui me bloque, après pas mal de recherche sur vos forum et sur d'autres.

    Je cherche a faire un petit code source qui accède à un fichier XML généré par Allociné. Le code est simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // Using System.Xml
    string xmlUri = "http://api.allocine.fr/rest/v3/search?partner=yW5kcm9pZC12M3M&filter=movie&q=Invictus";
    XmlDocument xmlDocument = new XmlDocument();
    xmlDocument.Load(xmlUri);
    Seulement voilà, la méthode « Load() » met une dizaine de secondes à s'exécuter lors du premier appel. Ensuite, chaque autre appel est quasi instantané, et j'accède au résultat très rapidement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // Using System.Xml
    string xmlUri = "http://api.allocine.fr/rest/v3/search?partner=yW5kcm9pZC12M3M&filter=movie&q=Titanic";
    XmlDocument xmlDocument = new XmlDocument();
    xmlDocument.Load(xmlUri); // Lenteur anormale d'une dizaine de secondes
     
    xmlUri = "http://api.allocine.fr/rest/v3/search?partner=yW5kcm9pZC12M3M&filter=movie&q=Avatar";
    xmlDocument = new XmlDocument();
    xmlDocument.Load(xmlUri); // Quasi instantané
    Je pense qu'il est possible d'accélérer significativement le premier appel à « Load() », car si j'accède à l'URL avec mon navigateur Web : il me l'affiche instantanément dès la première fois : Voyez plutôt.
    Toutefois, quand je demande au Bloc-Notes de m'ouvrir l'URL : la première ouverture est lente (une dizaine de secondes) et les suivantes sont rapides.

    Auriez-vous une idée de ce que je dois faire ?

    Merci d'avance,

    Picsonald.

  2. #2
    Membre éprouvé
    Avatar de dkmix
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : Jamaïque

    Informations forums :
    Inscription : Septembre 2007
    Messages : 619
    Points : 924
    Points
    924
    Par défaut
    Bonjour,

    Probablement une/des instanciation(s) côté serveur, qui sont ensuite mis en cache.

    Pour un service web WCF le phénomène est connu, il concerne l'instanciation du "channel factory".

    A cela s'ajoute surement des ralentissent du à l'authentification, proxy ou autre, qui sont surement mis en cache aussi pour les appels suivants.

  3. #3
    Nouveau membre du Club Avatar de Picsonald
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 23
    Points : 39
    Points
    39
    Par défaut
    Bonjour dkmix, et merci pour ta réponse !

    Les phénomènes que tu avances sont vrais, mais alors comment mon navigateur fait-il pour charger instantanément ce fichier XML distant, lui ?

    Je me demande si y'aurais pas des manips à faire pour ignorer le DTD... J'ai essayé des morceaux de codes trouvés sur le web, mais je ne suis rien arrivé à faire marcher.

    D'autres idées ?


    Merci,

    Picsonald.

  4. #4
    Membre émérite
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Points : 2 424
    Points
    2 424
    Par défaut
    si ton hypothèse sur web browser est vrai?!!! essaye d'utiliser WebClient pour télécharger le contenu du XML

  5. #5
    Nouveau membre du Club Avatar de Picsonald
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 23
    Points : 39
    Points
    39
    Par défaut
    Bonne idée, mais hélas : ça ne fonctionne pas

    Je l'ai fait, mais le résultat est le même : le premier accès est lent, puis les autres sont instantanés.

    Je ne comprend pas ce phénomène...

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2008
    Messages : 231
    Points : 359
    Points
    359
    Par défaut
    J'ai essayé ton lien, et perso tout à été super rapide dès la première utilisation.
    Es ce que le problème de ne viendrai pas de l'endroit ou tu développes ?
    Es ce que tu es au travail et es ce que ça le fait que pour allociné ?
    Je ne fais qu'une hypothèse, car perso quand je teste ton lien je suis rapide dès la première utilisation.
    "Une belle citation est un diamant au doigt de l'homme d'esprit et un caillou dans la main d'un sot."
    Joseph Roux

  7. #7
    Nouveau membre du Club Avatar de Picsonald
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 23
    Points : 39
    Points
    39
    Par défaut
    Salut Morgand,

    Merci pour ta réponse et tes tests.

    Tu as essayé mon lien avec ton navigateur web, du coup ? Et ça a été rapide ?
    Je confirme : c'est également le cas chez moi. Essaye maintenant d'ouvrir l'URL dans le Bloc-Notes, et tu verras : il y a un temps d'attente manifeste.

    Si c'est bien le cas, tente d'ouvrir une nouvelle fois l'URL dans le Bloc-Note, en changeant le nom du film recherché si tu veux : c'est instantané.


    Ce que j'aimerais découvrir : c'est pourquoi est-ce que le navigateur est instantané alors que mon code C# ne l'est pas (que je passe par un XmlDocument.Load(xmlUri) ou par un WebClient.DownloadString(String) : je suis soumis a un petit temps d'attente la première fois)...

    Merci encore pour ton hypothèse.

Discussions similaires

  1. [cURL] Accès à une URL sécurisée avec SSL
    Par piratack007 dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 01/03/2010, 13h48
  2. Accès à une variable XML par JS
    Par drumtof dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 09/06/2009, 10h20
  3. Rome RSS: j'arrive pas à parser une url xml
    Par amine84 dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 16/12/2007, 13h27
  4. Restreindre l'accès à une URL précise
    Par gavelin dans le forum Apache
    Réponses: 3
    Dernier message: 17/05/2006, 13h09

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