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

Delphi Discussion :

Vider le cache avant téléchargement avec tIdHTTP


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Par défaut Vider le cache avant téléchargement avec tIdHTTP
    J'utilise le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With TIdHTTP.Create(Application) do Begin
            Port    := 80;
            l_Chaine = Get('AdresseURL.xml')
    Ca fonctionne parfaitement la première fois.
    Par contre si je modifie le fichier contenu par AdresseURL.xml le programme toujours récupère les anciennes données.
    Je pense que cela provient du cache mais je ne trouve pas la commande pour le vider.

  2. #2
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 704
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 704
    Par défaut
    Essais ça :
    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
       procedure ViderCache;
       var
          lpEntryInfo: PInternetCacheEntryInfo;
          hCacheDir: LongWord;
          dwEntrySize: LongWord;
       begin
          dwEntrySize := 0;
          FindFirstUrlCacheEntry(nil, TInternetCacheEntryInfo(nil^), dwEntrySize);
          GetMem(lpEntryInfo, dwEntrySize);
          if dwEntrySize > 0 then
             lpEntryInfo^.dwStructSize := dwEntrySize;
          hCacheDir := FindFirstUrlCacheEntry(nil, lpEntryInfo^, dwEntrySize);
          if hCacheDir <> 0 then
          begin
             repeat
                DeleteUrlCacheEntry(lpEntryInfo^.lpszSourceUrlName);
                FreeMem(lpEntryInfo, dwEntrySize);
                dwEntrySize := 0;
                FindNextUrlCacheEntry(hCacheDir, TInternetCacheEntryInfo(nil^), dwEntrySize);
                GetMem(lpEntryInfo, dwEntrySize);
                if dwEntrySize > 0 then
                   lpEntryInfo^.dwStructSize := dwEntrySize;
             until not FindNextUrlCacheEntry(hCacheDir, lpEntryInfo^, dwEntrySize);
          end;
          FreeMem(lpEntryInfo, dwEntrySize);
          FindCloseUrlCache(hCacheDir);
       end;
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Par défaut
    Merci.
    Je suis en train d'essayer mais j'ai une erreur sur PInternetCacheEntryInfo.
    A quelle unité correspond-il ?

  4. #4
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 704
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 704
    Par défaut
    Faut ajouter WinInet dans tes uses.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Par défaut
    Au niveau code ca fonctionne mais le résultat est identique.
    En fait c'est le cache du proxy qu'il faudrait vider ou alors forcer la page à se recharger.

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Par défaut
    J'ai trouvé une solution.
    Je la donne ici au cas où cela pourrait aider quelqu'un

    à l'URL lancée nous avons ajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     + '?' + DateToStr(Date)+TimeToStr(Time)
    ainsi l'URL demandée est à chaque fois différente et le cache ne se déclenche plus

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

Discussions similaires

  1. forcer un téléchargement avec du code placé avant
    Par laurentSc dans le forum Langage
    Réponses: 12
    Dernier message: 26/02/2010, 16h07
  2. Réponses: 0
    Dernier message: 22/02/2010, 14h03
  3. [C#] Vider le cache d'un client
    Par dupin40 dans le forum ASP.NET
    Réponses: 6
    Dernier message: 26/09/2007, 11h21
  4. Réponses: 1
    Dernier message: 02/09/2004, 14h40

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