Patrick: Cache Problem beim Dateidownload

Hi!

Auf einer Seite gibt es einen Link auf eine Datei zum Downloaden. Diese Datei ändert sich öfters inhaltlich bei gleichbleibendem Dateinamen.

Wenn sich jemand die Datei schon einmal heruntergeladen hat, nimmt der Browser beim Versuch sich die aktuelle Datei herunterzuladen immer die alte Datei aus dem Cache.

Es handelt sich übrigens um eine pdf-Datei. PHP stünde auch zur Verfügung...

meta-tags nützen hier ja wohl nichts, da lediglich die html-Datei neu geladen wird, oder?

Mit fällt nur ein, der Datei jedes Mal einen anderen Namen zu geben. Gibts auch was einfacheres?

Gruß,
Patrick

  1. Hi Patrick,

    Auf einer Seite gibt es einen Link auf eine Datei zum Downloaden. Diese Datei ändert sich öfters inhaltlich bei gleichbleibendem Dateinamen.

    was spricht dagegen, beispielsweise das Änderungsdatum oder die Versionsnummer in den URL aufzunehmen (und die darauf verweisende Seite - mit konstantem URL - ggf. serverseitig zu generieren)?

    Wenn sich jemand die Datei schon einmal heruntergeladen hat, nimmt der Browser beim Versuch sich die aktuelle Datei herunterzuladen immer die alte Datei aus dem Cache.

    Sendest Du entsprechende HTTP-Header mit, die dem Client nahelegen, dies nicht zu tun?
    (Dies löst Dein Problem nicht, aber es mildert die Symptome.)

    Es handelt sich übrigens um eine pdf-Datei. PHP stünde auch zur Verfügung...

    Beides ist für Dein Problem irrelevant.

    meta-tags nützen hier ja wohl nichts, da lediglich die html-Datei neu geladen wird, oder?

    Du versuchst, das Verhalten eines HTTP-Client zu beeinflussen - die geeignete Sprache hierfür ist HTTP, und die Umsetzung hierfür besteht im Senden der entsprechenden HTTP-Header. Das kannst Du ggf. mit PHP lösen; ich würde allerdings eine entsprechende Server-Konfiguration vorziehen.

    Mit fällt nur ein, der Datei jedes Mal einen anderen Namen zu geben.

    Für unterschiedliche Datei-Inhalte ist dies in der Tat eine angemessene Methode - und die einzige, die zuverlässig funktionieren kann.

    Gibts auch was einfacheres?

    Dein Server kann dem Browser gegenüber lediglich Vorschläge machen; ob sich dieser daran hält, ist seine Sache. Von dazwischenliegenden Caching Proxy-Servern ganz zu schweigen.

    Dein Problem ist übrigens hundertfach im Archiv dieses Forums diskutiert worden.

    Viele Grüße
          Michael

    --
    T'Pol: I apologize if I acted inappropriately.
    V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
    (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
     => http://www.peter.in-berlin.de/projekte/selfcode/?code=sh%3A|+fo%3A}+ch%3A]+rl%3A(+br%3A^+n4%3A(+ie%3A%25+mo%3A)+va%3A|+de%3A%2F+zu%3A|+fl%3A(+ss%3A)+ls%3A~+js%3A|
    Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.
    1. was spricht dagegen, beispielsweise das Änderungsdatum oder die Versionsnummer in den URL aufzunehmen (und die darauf verweisende Seite - mit konstantem URL - ggf. serverseitig zu generieren)?

      ist halt umständlicher...

      Dein Problem ist übrigens hundertfach im Archiv dieses Forums diskutiert worden.

      ich habe in den hunderten Beiträgen im Archiv immer nur das Problem gefunden, bei php oder html - Dateien das Cachen zu verhindern (mit Meta Tags oder header Informationen). Mir ist aber nicht klar, wo die header Informationen hin sollen, wenn ich z.B. eine pfd oder von mir aus xls-Datei im Browser öffne .

      Danke trotzdem - ich werds wohl mit verschiedenen Dateinamen versuchen müssen, oder!?

      1. Hi Patrick,

        Mir ist aber nicht klar, wo die header Informationen hin sollen, wenn ich z.B. eine pfd oder von mir aus xls-Datei im Browser öffne.

        wenn Du die entsprechende Datei tatsächlich direkt verlinkst, dann hilft in der Tat nur eine entsprechende Server-Konfiguration (Apache: mod_expires etc.).

        Alternativ hättest Du ein PHP-Skript dazwischen schalten können, welches serverseitig die Datei öffnet und zunächst passende HTTP-Header, anschließend aber den Inhalt dieser Datei ausgibt.

        Viele Grüße
              Michael

        --
        T'Pol: I apologize if I acted inappropriately.
        V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
        (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
         => http://www.peter.in-berlin.de/projekte/selfcode/?code=sh%3A|+fo%3A}+ch%3A]+rl%3A(+br%3A^+n4%3A(+ie%3A%25+mo%3A)+va%3A|+de%3A%2F+zu%3A|+fl%3A(+ss%3A)+ls%3A~+js%3A|
        Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.