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++Builder Discussion :

Vider le cache CppWebBrowser


Sujet :

C++Builder

  1. #1
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 531
    Par défaut Vider le cache CppWebBrowser
    Je souhaite désactiver tout cache sur ce composant, car si je demande deux fois la même page, il ne va pas la lire mais utilise le cache.
    je ne souhaites pas utiliser refresh, mais bien relancer le site par la commande:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WebBrowser1->Navigate((WideString)"http://www.j.ai.pas.trouve.com/");
    je n'ai pas trouvé la commande ni l'option si elle existe sur le composant.

  2. #2
    Rédacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Par défaut
    Bonjour,

    Il te suffit de changer un peu ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TVariant flags;
    flags = 2 | 4 | 8; // navNoHistory | navNoReadFromCache | navNoWriteToCache
    WebBrowser1->Navigate((WideString)"http://www.j.ai.pas.trouve.com/", &flags);
    Cordialement,

    Arnaud

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 531
    Par défaut
    Mercy Greybird en regardant l'aide de BCB6 j'aurais pu trouver sur 2006 c'est pas ça l'aide ...

    Néanmoins pour ce que je veux faire ça marche pas, en éffet je fais un process qui surveille les temps de réponse d'un serveur web, par exemple de façon simple en tapant sur la même page.

    je déclanche un timer et sur l'évènement <OnDocumentComplète> je compte le nombre de tick. le premier coup j'ai par exemple 8 secondes de décomptée
    et après toujours 0 (et on peut voir que la page n'est pas rechargée).
    c'est bizzare sur la page d'accueil Google ça fait ça et sur la page d'accueil Altavista ça me donne bien un temps cohérent à chaque fois (même si je ne met pas le <flags>)

    Bizzare non, des idées ou autre façon de faire ??

  4. #4
    Rédacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Par défaut
    Bonjour,

    OnDocumentComplete peut se produire plusieurs fois. As-tu bien mis en place le mécanisme permettant de s'assurer qu'il s'agit bien du dernier OnDocumentComplete ? (cf aide BCB6) Dans le cas contraire, il se peut qu'une image soit en cache, et que les paramètres donnés au Navigate ne servent que pour la page en elle-même ? C'est fumeux, mais je ne vois pas trop ce qui pourrait expliquer ce genre de comportement.... Peut-être que je rate quelque chose.
    Tu peux peut être essayer d'installer Ethereal et de surveiller les requetes qui passent pour t'assurer que tout est normal. Genre pas de réponse 304 de Google ou ce genre de chose.

    Sinon, dans la mesure où il s'agit uniquement d'une application de surveillance, et où donc l'affichage de la page est inutile, je te conseille vivement l'utilisation d'un composant sans affichage graphique, du type TIdHTTP.


    Arnaud

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 531
    Par défaut
    Bon après avoir fait plusieurs tests TidHTTP fonctionne bien mais ne comptabilise pas le temps de chargement des images, et dans mon cas c'est important.

    l'aspect affichage est sympathique aussi dans mon application puisque je tourne sur plusieurs pages pour faire une moyenne.

    Donc le seul cas qui fonctionne c'est de créer à chaque fois un composant TCppWebBrowser dynamique pour chaque page HTML.

    Seul souci c'est que je ne suis pas arrivé à lancer une fonction sur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WebBrowser1DocumentComplete(TObject *Sender, LPDISPATCH pDisp, Variant *URL)
    puisque le lien est justement dynamique... et je suis pas parvenu à faire le lien , si quelqu'un maitrise le sujet...

  6. #6
    Rédacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Par défaut
    Citation Envoyé par Fbartolo
    Seul souci c'est que je ne suis pas arrivé à lancer une fonction sur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WebBrowser1DocumentComplete(TObject *Sender, LPDISPATCH pDisp, Variant *URL)
    puisque le lien est justement dynamique... et je suis pas parvenu à faire le lien , si quelqu'un maitrise le sujet...
    Je ne comprend pas très bien le problème. Pourrais-tu le reformuler s'il te plait ?

    Arnaud

  7. #7
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 531
    Par défaut
    Bon j'ai trouvé une solution, qui ne me plait pas trop mais bon:

    N'arrivant pas à faire une transtypage sur l'évènement: OnDocumentComplete, afin de faire pointer une fonction classique après création dynamique de TCppWebBrowser... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    TCppWebBrowser *CppWebBrowser1;
    CppWebBrowser1 = new TCppWebBrowser(Form2);
    CppWebBrowser1->ParentWindow = Handle;
    unsigned long Add;
    TVariant  Flags = (2 |4 |8 );
    DelaiWeb = 0;
    CppWebBrowser1->OnDocumentComplete = CppWebBrowser2->OnDocumentComplete;
     
    Timer1->Enabled = true;
    CppWebBrowser1->Navigate((WideString) "http://www.c.est.ca.com/",&Flags);


    J'en ai mis deux: un qui est ma référence pour alimenter les évènements On...

    et l'autre que je créé dynamiquement avec ensuite l'affectation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CppWebBrowser1->OnDocumentComplete = CppWebBrowser2->OnDocumentComplete;
    Ainsi le compilateur me permet de pointer sur les évènements (avec mon code) de l'autre CppWebBrowser..

    Ceci dit si Quelqu'un connait une manière d'écrire plus "conforme" je suis preneur.
    Car de mettre en place deux composants pour en utiliser un c'est pas top.

    Je me permet de mettre résolu par ce que cela fonctionne mais cela ne me plait pas trop..

  8. #8
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 531
    Par défaut
    Citation Envoyé par Greybird
    Je ne comprend pas très bien le problème. Pourrais-tu le reformuler s'il te plait ?

    Arnaud
    Quand je met un composant WebBrowser sur ma fiche, je peux écrire du code dans les évènements gérés par le composants (inspecteur d'objet, evènement..)

    Lorsque je le créé en dynamique, je ne sai pas adresser ces évènements.

    C'est ça mon PB, que j'ai détourné pour l'instant en plaçant un composant en statique et en y mettant le code, puis je fais pointer ensuite sur ce dernier... c'est pas très glop.

  9. #9
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonjour,
    Il se peut que je ne comprenne pas le bien le problème, et que je réponde a côté dsl, mais quand je fais :
    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
     
    void __fastcall TForm1::BTajoutClick(TObject *Sender)
    {
    //
    TCppWebBrowser *pCpp = new TCppWebBrowser(this);
    pCpp->ParentWindow = this->Handle;
    pCpp->OnDocumentComplete = MyCppDocumentComplete;
    WideString Url = "http://www.developpez.net/forums/";
    TVariant  Flags = (2 |4 |8 );
    pCpp->Navigate(Url, &Flags);
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::MyCppDocumentComplete(TObject* Sender, LPDISPATCH pDisp, tagVARIANT *URL)
    {
        Beep();
        ShowMessage("C'est bon....le saucisson !");
    }
    avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void __fastcall MyCppDocumentComplete(TObject* Sender, LPDISPATCH pDisp, tagVARIANT *URL);
    dans le .h
    cela semble fonctionner, en tout cas cela renvoie bien le petit message (au contenu d'ailleurs tres philosophique, je te laisse apprécier...)

  10. #10
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 531
    Par défaut
    Super c'était bien cela que je cherchais... bravo et merci.

    Dernière chose qui ne fonctionne pas c'est l'agrandissement de la fenêtre avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pCpp->Align = alClient;
    .

    J'ai aussi changé le message car "Saucisson" c'est pas bon pour mon régime

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#] Vider le cache d'un client
    Par dupin40 dans le forum ASP.NET
    Réponses: 6
    Dernier message: 26/09/2007, 11h21
  2. écran bleu [vider mémoire cache]
    Par gilleski2010 dans le forum Périphériques
    Réponses: 2
    Dernier message: 03/08/2006, 17h56
  3. [DBA] Vider le cache
    Par mguinot dans le forum Oracle
    Réponses: 4
    Dernier message: 18/07/2006, 09h08
  4. [Cache IE] vider le cache d'IE
    Par Casp dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/02/2006, 15h27
  5. Vider le cache des archives
    Par Thrystan dans le forum Debian
    Réponses: 4
    Dernier message: 30/06/2005, 10h55

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