HTML & Cache

HTML & Cache

Hallo zusammen,

zwar ist die Urquelle ein komplexes Perl-Programm, aber es scheint primär ein HTML Problem zu sein. Drum das Posting hier.

Am Ende wird eine Datei in einen Ordner geschrieben und zum Download angeboten. Diese Datei hat immer den gleiche Namen 99998.csv.
Beim ersten Mal wird die korrekte Datei auch angeboten und nach dem Donload angezeigt, beim zweiten Mal in der Sitzung dann wird zwar eine neue durch das Perl Programm in den Ordner geschrieben, beim Download wird aber dann die alte Version angezeigt.
Schalte ich nun im IE bei den Einstellungen der temporären Internetdateien von automatisch auf „bei jedem Zugriff…“ um, wird auch immer sauber die neue Datei angezeigt.
Also Cache Problem, bei Müntz gelesen und den Code als Meta eingetragen, Browser zurückgesetzt und probiert, es wird wieder die alte gezeigt. Wo muss ich nun suchen? Originalcode der Datei unten, ist von einer Testmaschine, drum die URL.
Aber bitte keine Lösungsideen á la Session-key, variablere Dateinamen etc. Dazu reicht mein Perl nicht, und die Applikation ist wirklich recht groß und unübersichtlich.
Danke & schönes Wochenende
Michael

Code:
<!–//–>
function MeinSubmit(FeldName)
{
F_NAME = ‚Temp_Feld_‘ + FeldName;
document.forms[F_NAME].submit();
}
//–>
Anzahl Datensätze : 72 Download

Am Ende wird eine Datei in einen Ordner geschrieben und zum
Download angeboten. Diese Datei hat immer den gleiche Namen
99998.csv.
Beim ersten Mal wird die korrekte Datei auch angeboten und
nach dem Donload angezeigt, beim zweiten Mal in der Sitzung
dann wird zwar eine neue durch das Perl Programm in den Ordner
geschrieben, beim Download wird aber dann die alte Version
angezeigt.

Das ist aber nicht wirklich ein html-Problem…
Die Seite, die auf diese Datei verlinkt wird richtig neu geladen - zumindest wenn die Browser alle so kompatibel sind dass sie ’ statt " akzeptieren…
Die gelinkte Datei dagegen sendet diese Information nicht - und so kann es eben sein, dass der Browser auf den Cache zurückgreift, wo die Datei dann auch drin ist…
Du kannst hier aber evtl mit einem Trick arbeiten - und der heisst php…
nachdem die Seite ja jedesmal neu geladen wird musst Du einfach nur etwas an den link anhängen, damit der Browser denkt, dass es etwas anderes sein könnte. Anbieten tut sich da ein timestamp.
sprich dein Link lautet dann auf

http://wup9275771d.wup.com/auslagerung/downloads/99998.csv?timestamp=13232323121

habs leider nicht ausprobieren können weil der Link bei mir nicht funzt aber sollte gehen…

aber um hier nochmal einzuhaken

Code:

  1. verwende lieber " statt ’
  2. schreibe jedes <meta>-tag in eine neue Zeile

</head><html><body><font
size=‚2‘><B>Anzahl Datensätze : </B>72</font><p
/><p /><p /><p />

wenn Du w3c valide arbeiten willst verzichte auf das <font>-tag, das gibt es nicht mehr. Und nachdem Du mit css arbeitest bietet es sich ja eh an, dass Du das darin regelst…

Je nachdem wöfür deine Perl-Kenntnisse reichen bzw. ob du an den Server rankommst solltest du versuchen, ein „Cache-Verbot“ für die betroffene Datei gleich im HTTP-header mitzuschicken (Cache-Control: no-cache).

Und um wie in der ersten Antwort auf den HTML-Code zu kommen: Alle Tags sollten irgendwie geschlossen werden, auch link- und meta-Tags. Statt

sollte es heißen:

Das kann praktisch jeder Browser (ausnahmsweise sogar IE), es verträgt sich mit praktisch jeder HTML-Version, und es hat den Vorteil dass man so schon einen guten Schritt näher an XHTML ist.

Hi,

Und um wie in der ersten Antwort auf den HTML-Code zu kommen:
Alle Tags sollten irgendwie geschlossen werden, auch link- und
meta-Tags.

im Falle von HTML ist das ein Fehler. Dort sind die End-Tags von und forbidden.

Das kann praktisch jeder Browser (ausnahmsweise sogar IE),

Ein strikt standardkonformer wird wegen der Option SHORTTAGS ON, der HTML zugrunde liegt, den Slash als Element-Ende erkennen, woraufhin die schließende spitze Klammer zum Content wird , was wegen des optionalen End-Tags sowie des ebensolchen Start-Tags zum umgehenden Beginn des führt, so dass es fortan Fehler hagelt.

es
verträgt sich mit praktisch jeder HTML-Version,

Nein, es verträgt sich mit _keiner_ HTML-Version. Nur mit XHTML, welches die explizite Schließung aller Elemente zwingend erfordert.

und es hat den
Vorteil dass man so schon einen guten Schritt näher an XHTML
ist.

Entweder Du schreibst XHTML, oder Du schreibst HTML. Dazwischen existiert _nichts_, und man kann sich auch nicht nähern.

Cheatah

Hi,

Also Cache Problem, bei Müntz gelesen und den Code als Meta
eingetragen,

in HTML eingetragene HTTP-Header betreffen nur und ausschließlich diese HTML-Ressource, genau wie die HTTP-Header eines Responses nur und ausschließlich die mit ihnen zurückgelieferte Ressource betreffen. Insofern könntest Du statt der -Tags auch altgermanische Runen niederschreiben, das hat exakt den selben Effekt.

Wo muss ich nun suchen?

In der Server-Konfiguration beispielsweise.

Aber bitte keine Lösungsideen á la Session-key, variablere
Dateinamen etc. Dazu reicht mein Perl nicht, und die
Applikation ist wirklich recht groß und unübersichtlich.

Nun, mit HTML kannst Du exakt gar nichts bewegen. Vielleicht solltest Du Dich vom Begriff „Dateinamen“ trennen - in HTTP existiert eh nichts, was einer Datei ähnlich käme - und statt dessen an URLs denken.

Cheatah

Jop das mit dem Timestamp funkt! mach das auch immer so!

PS:
ist auch das einzige was mir gekannt ist das hilft!

das hilft
Hi,
das mit dem Timestamp - das war es. Minicode in Perl reingefummelt und dabei timestamp aus localtime(time) einfach als Wert genommen, und das war es.
Danke schön
Michael