Dateicaching verhindern, IE6 -2K-Server

  • #1
C

ComputerPadawan

Mitglied
Themenersteller
Dabei seit
05.12.2005
Beiträge
5
Reaktionspunkte
0
Hallo!

Ich habe folgendes Problem:
Ich habe ein kleines PHP-Skript geschrieben, welches Dateien in einem bestimmten Ordner udn dessen Unterordnern parst und im Windows Explorer Stil zum Download vorhält. Es handelt sich hierbei um Dokumente die im Rahmen eines Firmenintranets veröffentlicht werden und teilweise untereinander (über http-Links) verlinkt sind. Durch diese Verlinkung untereinander sind die Dateinamen fest vorgegeben und ändern sich bei Versionsänderungen der Dateien nicht!

Soweit klappt alles ganz gut, mit einem Haken: Wenn eine Datei aktualisiert wird merken das die darauf zugreifenden Browser (IE6) meinen Tests nach erst nachdem deren Cache (Temporäre Internetdateien) gelöscht wurde. Sonst wird die ältere Version der Datei angezeigt.
Wie kann ich das umgehen (Caching verhindern, Datei als neu kennzeichnen, ...) ohne die Dateien mit Versionsnummern zu versehen oder alle Browsereinstellungen zu ändern?


Einstellungsänderungen am Server (WIn200 Server, ISS, PHP4) wären kein Problem.

Um falschen Tips vorzugreifen: Das

Code:
<?php 
header(Expires: Mon, 26 Jul 1997 05:00:00 GMT);  // Datum aus Vergangenheit 
header(Last-Modified:  . gmdate(D, d M Y H:i:s) .  GMT); 
                           // immer geändert 
header(Cache-Control: no-store, no-cache, must-revalidate); // HTTP/1.1 
header(Cache-Control: post-check=0, pre-check=0, false); 
header(Pragma: no-cache);             // HTTP/1.0 
?>

und das

Code:
  <meta http-equiv=cache-control content=no-cache>
  <meta http-equiv=expires content=0>

funktioniert NICHT. (Und ich bin so langsam mit meinem Latein am Ende :( )
 
  • #2
Jo, das einfachste währe doch wohl, wenn es nur EINE Datei gäbe ;)
Soll heißen, wird eine neue Version bereitgestellt, bekommt die ALTE Version einen neuen Namen bzw. einen Namenszusatz.
Die sauberste Lösung währe, wenn du die ältere Datei in einen sep. Ordner verschieben könntest.
Diesen kannst du ja dann als - Ältere Versionen - im LAN anbieten.

So würde ich es jedenfalls machen ;), da das mit dem Caching eigentlich nie SOOOOO richtig hinhaut wie man sich das wünscht ;)
 
  • #3
Hi Conny,

da habe ich mich wohl unklar ausgedrückt. Wir machen es nämlich genauso wie Du das beschrieben hast. Die alte Datei bekommt einen anderen Namen und wird in den Ordner ungültig Verschoben. Das Problem ist, dass die Neue Datei den Selben Namen erhält.

Beispiel:
Nehmen wir an eine Datei heißt Präsentationsvorlage_extern.ppt. Sie stammt vom 17.12.2004 und liegt im Ordner aktuell/Vorlagen.

Am 29.10.2005 ändert sich dann etwas in dieser Datei (z.B. win Logo). Die Datei vom 17.12.2004 wird daraufhin umbenannt in Präsentationsvorlage_extern(17.12.2004).ppt udn in den Ordner ungültig/Vorlagen verschoben.
Die neue Version wird nun im Ordner aktuell/Vorlagen unter dem Namen Präsentationsvorlage_extern.ppt gespeichert.

Das Problem ist Folgendes: Klicke ich danach auf den Link, der auf die Datei aktuell/Vorlagen/Präsentationsvorlage_extern.ppt bekomme ich die Datei vom 17.12.2004 angezeigt, die auf dem Server an dieser Stelle eigentlich gar nicht mehr existiert, wiel sie vom Internet Explorer des Rechners, der die Datei aufruft gecacht wurde.

Was ich will ist also nicht das Caching gezielt zu benutzen, sonder es gezielt NICHT zu benutzen (allerdings ohne für die ganze Firma das Caching von internetseiten abzuschalten).
 
  • #4
Stell dem Dateinamen nen Timestamp voran, und die Wiese ist gemäht ;)

Oder du kannst ja auch lfd. Versionsnummern im Dateinamen unterbringen, ist vlt. schöner als ein Timestamp :°
 
  • #5
Ich glaub ich komm nicht ganz mit. Muss ich den Dateinamen dann nicht auch mit dem Timestamp als Teil des Dateinamens ansprechen?

Vom Trick mit <Dateiname>?<Timestamp> hatte ich ja schon gehört (Konnte ihn aber heute leider noch nicht ausprobieren und habe des weiteren vernommen das er genau mit IE6 nichtfunktionieren würde.

Probleme kriege ich da allerdings mit meinen eingangs erwähnten Links zwischen den verschiedenen Dateien. (Es gibt hier Handbücher, die aus Word oder Excel Dateien auf andere Dateien verlinken). Ich hab die Suppe nicht geplant, aber retten muss ich das versalzene Ding jetzt irgendwie ;-)

Die Lösung mit dem Timestamp wäre daher nur mein absoluter Notanker (von dem ich wie gesagt nicht weiß, ob er überhaupt funktioniert), weil das EInzige das mir einfällt um die in-File Links hinzubiegen wäre diese auf einen parametrisierten php-Aufruf umzubiegen, der dann wiederum die richtige Datei rausfischt und durchleitet. Mals abgesehen davon, dass hier alles von der Kompelxität her so langsam unübersichtlich würde müsste ich irgendjemanden dazu bringen alle Links (und wie reden hier von mehreren hundert) manuell abzuändern.
 
  • #6
ComputerPadawan schrieb:
Probleme kriege ich da allerdings mit meinen eingangs erwähnten Links zwischen den verschiedenen Dateien.

Ups, das hab ich nicht bedacht :-[
 
  • #7
Ich auch nicht, als ich umserem QMler versprochen habe: Das kriegen wir schon hin. ;)

Wie dem auch sei: Da sich nach den vielen Antworten die wir zwei jetzt schon geschrieben haben eh keiner mehr hierzu äußern wird muss ich mal abwarten ob in einem meiner üblichen anderen Foren was rauskommt.

Aber an Dich auf jeden Fall mal: Vielen Dank für den Versuch!
 
Thema:

Dateicaching verhindern, IE6 -2K-Server

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben