Kampf gegen den Cache
ad
- webserver
0 Steel0 ad0 Der Martin0 Steel
1 dedlfix
Moin zusammen,
ein Kunde wollte ein paar Bilder auf seiner Seite ausgetauscht haben und ich musste 1-2 Änderungen an der css durchführen. Alles wunderbar.
Problem: der Kunde sieht die Änderungen nicht (vollständig) (und seine Kunden vermutlich auch nicht) da die alten Dateien noch im Cache festhängen.
Eigentl. ein simples Problem, nur wie löst man das?
Danke! andi
Moin!
Problem: der Kunde sieht die Änderungen nicht (vollständig) (und seine Kunden vermutlich auch nicht) da die alten Dateien noch im Cache festhängen.
Eigentl. ein simples Problem, nur wie löst man das?
Cache loeschen!?
Welches Cache ist denn Das Problem? Liefert der Server irgendwas altes aus, oder ist schlicht der Browsercache schuld?
Moin
Cache loeschen!?
Das hilft aber meinem Kunden nix, wenn ich meinen cache lösche. Und wenn mein Kunde seinen cache löscht, hilft es seinen Kunden nix :)
Welches Cache ist denn Das Problem? Liefert der Server irgendwas altes aus, oder ist schlicht der Browsercache schuld?
Liegt am Browsercache
Hallo,
Das hilft aber meinem Kunden nix, wenn ich meinen cache lösche. Und wenn mein Kunde seinen cache löscht, hilft es seinen Kunden nix :)
stimmt, gut beobachtet. ;-)
Liegt am Browsercache
Dann hast du keine Chance. Wenn der Client a) eine Ressource im Cache hat und b) aufgrund der Daten vom ursprünglichen Abruf "weiß", dass diese Ressource noch einige Tage gültig ist und c) so konfiguriert ist, dass er diese Information für bare Münze nimmt, dann kannst du vom Server aus nichts dagegen tun. Nur abwarten.
Ciao,
Martin
Moin
dann kannst du vom Server aus nichts dagegen tun. Nur abwarten.
Was ist denn "Standard" für das Verfallsdatum? Ich habe nix entspr. eingestellt. Bzw. wie und wo macht man das?
danke
Hoi!
Was ist denn "Standard" für das Verfallsdatum? Ich habe nix entspr. eingestellt. Bzw. wie und wo macht man das?
oO Ist das n Praktikum?
Ueber Meta Angaben oder besser direkt im Datei Header.
Hi,
Was ist denn "Standard" für das Verfallsdatum? Ich habe nix entspr. eingestellt. Bzw. wie und wo macht man das?
oO Ist das n Praktikum?
Ueber Meta Angaben oder besser direkt im Datei Header.
bitte achte etwas genauer darauf, dass du durch ungewollt falsche Auskünfte niemanden irreführst. Du meinst selbstverständlich keine Dateiheader, sondern HTTP-Header - und einstellen kann man das in der Serverkonfiguration. Falls man die Ressource dynamisch generiert (etwa mit PHP oder Perl), kann bzw. muss man die entsprechenden Header selbst erzeugen.
Mit Meta-Angaben meintest du wahrscheinlich <meta http-equiv="...">.
Das ist natürlich nur in HTML-Dokumenten möglich, in anderen Ressourcen (Bilder, Javascripts, Stylesheets) nicht. Da geht's nur über "richtige" HTTP-Header.
Ciao,
Martin
Moin!
Du meinst selbstverständlich keine Dateiheader, sondern HTTP-Header--
Verdammt, Du hast recht! Da war wohl die Assoziation mit der erstellten Datei im Weg.
Zum Glueck werd ich nicht ohnmaechtig, wenn ich nen Bock geschossen hab. Auch nicht, wenn ichs Stephen Hawking zeige. ;) (die Anspielung wirst du aber kaum verstehen, schaetze ich? So als TV-Serien Verweigerer?)
Deinen letzten Absatz setze ich vorraus. Schliesslich habe ich jemandem geantwortet der einen Kunden hat, das also irgendwie beruflich macht. Da bin ich einfach mal von bestimmten Vorraussetzungen ausgegangen. Ansonsten haette ich gleich ausfuehrlicher mit Beispielen und Verlinkungen geantwortet. Ich habe meine Antwort(en) lediglich als kleine Gedaechtnisstuetze gesehen.
--
Signaturen sind blöd!
Om nah hoo pez nyeetz, Steel!
Zum Glueck werd ich nicht ohnmaechtig, wenn ich nen Bock geschossen hab. Auch nicht, wenn ichs Stephen Hawking zeige. ;) (die Anspielung wirst du aber kaum verstehen, schaetze ich? So als TV-Serien Verweigerer?)
Ich hätte nicht gedacht, dass du dies erst in der Übersetzung siehst.
--
Signaturen sind blöd!
Matthias
Moin!
Ich hätte nicht gedacht, dass du dies erst in der Übersetzung siehst.
In Ermangelung legaler (kostenloser) Optionen... Falls Du da was hast: Ich haett nix gegen den Rest von Season 6 und den Anfang von Season 7 einzuwenden.
Ansonsten zolle ich Produktionen, die mir gefallen, meinen Respekt dadurch, dass ich sie mir nur legal ansehe/hoere/durchlese, wenn ich sie nicht schon kaufe. Sachen dir mir nicht gefallen brauch ich auch nicht aus den einschlaegigen Kanaelen beziehen.
Om nah hoo pez nyeetz, Steel!
In Ermangelung legaler (kostenloser) Optionen... Falls Du da was hast: Ich haett nix gegen den Rest von Season 6 und den Anfang von Season 7 einzuwenden.
Nein, leider nicht. Nur immer mal ein paar Fotos auf Twitter. Außerdem bin ich des Englischen nicht so mächtig, dass ich Filme und Serien, die auf den Erwachsenenenbereich abzielen, im Original verstehen würde. Für meine Kinder gibts schon mal Harry Potter auf Englisch oder Französisch. Da sie bei diesen Filmen schon fast mitspielen können, kann man sich da wirklich auf die Sprache konzentrieren. In Verbindung mit gleichsprachigen UT halte ich das für eine gute Idee, obwohl die Untertitel nicht immer die exakte Übersetzung des gesprochenen Wortes darstellen.
Matthias
Hallo,
In Verbindung mit gleichsprachigen UT halte ich das für eine gute Idee, obwohl die Untertitel nicht immer die exakte Übersetzung des gesprochenen Wortes darstellen.
meinst du mit gleichsprachig, dass Audio und Untertitel die gleiche Sprache haben, also zueinander passen? Dann sehe ich das auch so.
Wenn allerdings gesprochene Sprache und Untertitel in verschiedenen Sprachen auf mich einstürmen, geht das garantiert schief, wenn ich prinzipiell beide Sprachen verstehe. Ich habe das vor einigen Jahren mal im Urlaub in NL erlebt: Da lief im Fernsehen ein alter James-Bond-Film - in englischer Sprache und mit niederländischen Untertiteln. Ich verstehe beides, aber nicht gleichzeitig. Deswegen ist es mir nicht gelungen, entweder den gehörten oder den gelesenen Text "auszublenden", so dass ich mich auf die andere Variante hätte konzentrieren können. Ich habe schließlich einen Streifen Karton vor den Fernseher gestellt, der ein paar Zentimeter am unteren Bildrand verdeckte. Damit waren die Untertitel weg, und ich konnte wieder gemütlich dem Film folgen.
Ähnlich geht es mir übrigens oft bei Nachrichten im Fernsehen, wenn beispielsweise irgendein internationaler Politiker gezeigt wird, der etwas in Englisch erzählt, und der Journalist quatscht in Deutsch rein. Dann verstehe ich nämlich keins von beiden mehr so richtig.
So long,
Martin
Om nah hoo pez nyeetz, Der Martin!
meinst du mit gleichsprachig, dass Audio und Untertitel die gleiche Sprache haben, also zueinander passen?
Ja.
Da lief im Fernsehen ein alter James-Bond-Film - in englischer Sprache und mit niederländischen Untertiteln.
Ein oft gebrachtes Argument, warum die deutschen Schüler schlechter Fremdsprachen (insbesondere Englisch) lernen, ist die ständige Synchronisation.
Matthias
Nabend!
Ein oft gebrachtes Argument, warum die deutschen Schüler schlechter Fremdsprachen (insbesondere Englisch) lernen, ist die ständige Synchronisation.
Das mag teilweise stimmen. Ich schlage zum Englisch lernen normalerweise auch vor Originale mit untertiteln zu sehen. Aber: Mein Schwager, Engländer, kann es seinen Kindern nicht beibringen. Sie sind in Englisch genauso wie alle anderen und sprechen zuhause gar nicht englisch. Verweigern es sogar. Blöd, weil ihre engl. Oma (die auch bei ihnen im ort lebt) z.b. kein deutsch kann.
War bei meinen Grundschulfreunden mit englischer Familie übrigens normal recht ähnlich. (Garnisionstadt halt)
Weiß der Geier, warum wir keine Fremdsprachen lernen.
Hallo,
Ein oft gebrachtes Argument, warum die deutschen Schüler schlechter Fremdsprachen (insbesondere Englisch) lernen, ist die ständige Synchronisation.
Das mag teilweise stimmen.
ja, kann schon sein. Ich bin aber überzeugt, es liegt auch daran, *wie* Fremdsprachenunterricht an den Schulen praktiziert wird. Und damit meine ich nicht den schultypischen Lernzwang.
Aber wenn ich nur mal vergleiche, wie in meiner eigenen Schulzeit der Englisch- und der Französischunterricht ablief, dann liegen Welten dazwischen.
Englisch wurde sehr locker und teilweise sogar spielerisch gelehrt. Klar, Vokabeln pauken und Grammatik lernen gehörte auch dazu, ohne geht's nicht. Aber unsere Englischlehrer haben auch ab und zu abseits vom Lehrbuch mal reine Konversationsstunden gemacht, wo einfach in Englisch über Gott und die Welt gequatscht wurde, so gut man's halt konnte. Oder Rollenspiele (wenn man's mag). Oder wir haben mal Ausschnitte aus englischsprachigen Zeitschriften besprochen. Oder der Lehrer hat mal einen englischsprachigen Film organisiert. Kurz: Der Unterricht war in weiten Teilen unterhaltsam, abwechslungsreich und animierend.
Der Französischunterricht war dagegen steif und konservativ und beschränkte sich weitgehend auf ein stur-mechanisches Auswendiglernen von Satzbauregeln und Vokabeln, das Ausfüllen von Lückentexten aus dem Übungsbuch oder das (fast) einsilbige Beantworten von Fragen.
Und bei diesem Kontrast ist es wohl nicht verwunderlich, dass mir Englisch von Anfang an lag, während ich mich für Französisch nie begeistern konnte - ganz abgesehen davon, dass mir der Klang der Sprache überhaupt nicht gefällt. Heute sind es dann Sprachen wie Spanisch, Italienisch oder sogar Russisch, die mich faszinieren und die ich vielleicht irgendwann noch lernen will. Wohlgemerkt: *will*. Ohne Lernzwang.
Ich schlage zum Englisch lernen normalerweise auch vor Originale mit untertiteln zu sehen.
Ja, dann aber bitte Englisch mit englischen Untertiteln, nicht mit deutschen.
Weiß der Geier, warum wir keine Fremdsprachen lernen.
Im Schulalter ist es vermutlich überwiegend Faulheit und/oder Desinteresse.
So long,
Martin
[latex]Mae govannen![/latex]
Der Französischunterricht war dagegen steif und konservativ und beschränkte sich weitgehend auf ein stur-mechanisches Auswendiglernen von Satzbauregeln und Vokabeln, das Ausfüllen von Lückentexten aus dem Übungsbuch oder das (fast) einsilbige Beantworten von Fragen.
Bei mir war es genau anders herum - französisch war eher locker (hat mir nur nihts gebracht, da ich es nie wieder genutzt habe), englisch nervig (was auch an der Leer..äh..Lehrerin lag). Ich habe da meist nur das Allernötigste getan .. worunter ich jetzt oft leide, da beim Programmieren nichts ohne englisch geht.
Now hit I me so through... ;)
Weiß der Geier, warum wir keine Fremdsprachen lernen.
Im Schulalter ist es vermutlich überwiegend Faulheit und/oder Desinteresse.
Ja, und das verstärkt, weil man durch die Lern-Methoden demotiviert wird.
Stur lächeln und winken, Männer!
Kai
Om nah hoo pez nyeetz, Der Martin!
So wie du deinen Englischunterricht beschreibst, das ist das, was ich vermehrt an den Schulen sehe. Aber du kannst einen Ossi zwischen 35 und 50 erkennen, indem du ihn fragst, was Sehenswürdigkeit auf Russisch heißt[1]. Das ist auch bezeichnend für Unterrichtsformen.
Das meine ich völlig ernst.
Matthias
Aber du kannst einen Ossi zwischen 35 und 50 erkennen, indem du ihn fragst, was Sehenswürdigkeit auf Russisch heißt
Potomtigoworitporusskismenja?
Om nah hoo pez nyeetz, Ossi zwischen 35 und 50!
Aber du kannst einen Ossi zwischen 35 und 50 erkennen, indem du ihn fragst, was Sehenswürdigkeit auf Russisch heißt
Potomtigoworitporusskismenja?
Danach sprichst du russisch mit mir?
Matthias
Nabend!
Nein, leider nicht. Nur immer mal ein paar Fotos auf Twitter. Außerdem bin ich des Englischen nicht so mächtig, dass ich Filme und Serien, die auf den Erwachsenenenbereich abzielen, im Original verstehen würde. Für meine Kinder gibts schon mal Harry Potter auf Englisch oder Französisch. Da sie bei diesen Filmen schon fast mitspielen können, kann man sich da wirklich auf die Sprache konzentrieren. In Verbindung mit gleichsprachigen UT halte ich das für eine gute Idee, obwohl die Untertitel nicht immer die exakte Übersetzung des gesprochenen Wortes darstellen.
Ja. Ich schalte auch gern UT ein, weil grad im original die Sprache im Hintergrund untergeht. Ich kenne Leute die amerikanisch aufgewachsen sind und das genauso sehen. Man versteht oft einfach nichts weils den Augenblick irgendwie nur ein Geräuschknäuel ist.
IT Crowd besitze ich z.b. als DVD und schau gern das original. Die Engländer sind da irgendwie besser. Auch wenn man im echten Leben tatsächlich oft die Amis besser versteht als die Briten. (hab jetzt extra Briten geschrieben)
Ach ja: Threaddrift!
Hallo,
Zum Glueck werd ich nicht ohnmaechtig, wenn ich nen Bock geschossen hab. Auch nicht, wenn ichs Stephen Hawking zeige. ;) (die Anspielung wirst du aber kaum verstehen, schaetze ich? So als TV-Serien Verweigerer?)
Stephen Hawking ist mir natürlich ein Begriff, aber davon abgesehen fehlt mir hier anscheinend wirklich der Kontext.
Im übrigen bin ich durchaus kein Serien-Verweigerer - es gibt etliche deutsche, amerikanische und englische Serien in den Genres Action, Krimi, Mystery und mehr, die ich gern anschaue. Die X-Files, Magnum, Der Clown, True Blood, The Persuaders (de: "Die 2"), um nur eine Handvoll zu nennen.
Ciao,
Martin
Om nah hoo pez nyeetz, Der Martin!
Stephen Hawking ist mir natürlich ein Begriff, aber davon abgesehen fehlt mir hier anscheinend wirklich der Kontext.
Stephen Hawking hatte (gestern) einen Gastauftritt als er selbst in "The Big Bang Theorie".
Matthias
Hallo,
Ueber Meta Angaben oder besser direkt im Datei Header.
Wenn du PHP verwendest gugge ma hier:
PHP: header - Manual:
<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Datum in der Vergangenheit
?>
Probier mal Expires: -1 oder Datum in der Vergangenheit bzw auf deine Bedürfnisse anpassen. Header müssen vor dem Output geschickt werden.
Herzliche Grüße,
Jonny 5
Beim Browsercache kannst Du eh nur bedingt was unternehmen. Du kannst natuerlich beim Ausgeben der Seiten den Browser bitten, das Cachen zu unterlassen. Das funktioniert meist, muss aber nicht. Wirklich was dran aendern kann nur der User (Admin) der benutzten Browser.
Das ist kein Problem sondern eine schlichte Tatsache.
Tach!
Problem: der Kunde sieht die Änderungen nicht (vollständig) (und seine Kunden vermutlich auch nicht) da die alten Dateien noch im Cache festhängen.
Eigentl. ein simples Problem, nur wie löst man das?
Das ändert jetzt auch nicht allzu viel, wenn der Client das Einstiegsdokument gecacht hat und diese Version noch lange verwendet. Das Einstiegsdokument muss nicht die index.html im DocumentRoot sein, das kann auch irgendeine gebookmarkte (Unter-)Seite sein. Da hilft nur, von vorn herein das Verfallsdatum kurz genug anzugeben, zum Beispiel einen Tag oder bei Bedarf noch kürzer.
Aber bei den im Verhältnis zum Inhalt sich seltener ändernden Beiwerk-Ressourcen (CSS, JS, Bilder) will man die Zeit lieber lang lassen, damit der Client weniger zu übertragen hat. Logischerweise hat ein Client eine Ressource dann nicht mehr im Cache, wenn sich deren URL ändert. Das kann man recht einfach anstellen, indem man eine "Versionsnummer" anhängt. Der Dateiname des Ziels bleibt unverändert, aber der Verweis darauf bekommt ein ?n angehängt, also einen Querystring, wobei n eine bei jeder Änderung hochgezählte Zahl ist.
dedlfix.
Hallo,
Der Dateiname des Ziels bleibt unverändert, aber der Verweis darauf bekommt ein ?n angehängt, also einen Querystring, wobei n eine bei jeder Änderung hochgezählte Zahl ist.
führt das nicht dazu, dass der eine oder andere Browser diese Ressource dann gar nicht mehr im Cache einlagert? Ich habe sowas öfter gelesen, aber nie selbst nachgeprüft. Kann auch sein, dass das nur eine Unart sehr alter IEs ist/war. Wer weiß mehr darüber?
So long,
Martin
Tach!
Der Dateiname des Ziels bleibt unverändert, aber der Verweis darauf bekommt ein ?n angehängt, also einen Querystring, wobei n eine bei jeder Änderung hochgezählte Zahl ist.
führt das nicht dazu, dass der eine oder andere Browser diese Ressource dann gar nicht mehr im Cache einlagert?
Dazu gibt es technisch gesehen keinen (mir bekannten) Grund. Alles was mit GET abgerufen werden kann, sollte bei derselben URL immer daselbe Ergebnis liefern, zumindest in der vom Server angegebenen Cache-Zeit.
Ich habe sowas öfter gelesen, aber nie selbst nachgeprüft. Kann auch sein, dass das nur eine Unart sehr alter IEs ist/war. Wer weiß mehr darüber?
Sowas hab ich auch mal gehört, aber das betraf wohl nur Querystrings ab einer bestimmten Länge.
dedlfix.
Moin!
Dazu gibt es technisch gesehen keinen (mir bekannten) Grund. Alles was mit GET abgerufen werden kann, sollte bei derselben URL immer daselbe Ergebnis liefern, zumindest in der vom Server angegebenen Cache-Zeit.
Aha? Also sollte man Zufallsergebnisse (Wuerfel) besser nicht per Get realisieren? (example.com/rollitbaby.php?count=2&type=D6)
;)
Tach!
Dazu gibt es technisch gesehen keinen (mir bekannten) Grund. Alles was mit GET abgerufen werden kann, sollte bei derselben URL immer daselbe Ergebnis liefern, zumindest in der vom Server angegebenen Cache-Zeit.
Aha? Also sollte man Zufallsergebnisse (Wuerfel) besser nicht per Get realisieren? (example.com/rollitbaby.php?count=2&type=D6)
Doch, GET kannst du dafür verwenden, aber du solltest dann auch das Cachen zu verhindern versuchen (Expires auf 0 setzen zum Beispiel).
dedlfix.
Is mir schon klar, dass man das so machen kann. Ich finde aber Martins Ansatz gar nicht verkehrt, Ressourcen mit Querystring erstmal gar nicht zu cachen.
Es ist halt ziemlich egal, ob die Seite, die das Impressum, die Admins, ... zeigt, jedesmal neu generiert wird oder nicht. Bei ebay, Foren, Fratzenbuch, Zufalls-Generatoren, ... aber eben nicht. Mir erscheint cachen erst auf ausdruecklichen Wunsch hier sinnvoller. (es funktioniert immer und wenn man auf die Idee kommt, dass eine Ressource ja gar nicht jedesmal neu geladen werden muss, kann man das einrichten, wenn man meint jemandem damit einen Gefallen zu tun) Aber das ist wohl wieder eine Sache des persoenlichen Geschmacks.
Hallo,
Ich finde aber Martins Ansatz gar nicht verkehrt, Ressourcen mit Querystring erstmal gar nicht zu cachen.
das ist nicht "mein Ansatz", und ich finde ihn auch nicht einmal besonders gut. Ich habe einfach nur ein paarmal davon gehört bzw. gelesen.
[...] Aber das ist wohl wieder eine Sache des persoenlichen Geschmacks.
Zum Großteil, ja. Deswegen habe ich meine Browser so eingestellt, dass sie zwar cachen dürfen, ihren Cache-Inhalt aber beim Schließen des Browsers entsorgen; außerdem fragen sie auch dann mit einem Conditional Request (If-Modified-Since) beim Server nach, wenn sie die gesuchte Ressource noch im Cache haben. So habe ich zwar ein bissl unnötiges HTTP-Gebrabbel, aber immer die aktuellste Fassung der Ressource.
Ciao,
Martin
Tach!
Ich finde aber Martins Ansatz gar nicht verkehrt, Ressourcen mit Querystring erstmal gar nicht zu cachen.
Warum dies? Ein Querystring sagt (im Prinzip) nicht aus, dass eine solche Ressource ständigen Änderungen ausgesetzt ist.
Es ist halt ziemlich egal, ob die Seite, die das Impressum, die Admins, ... zeigt, jedesmal neu generiert wird oder nicht. Bei ebay, Foren, Fratzenbuch, Zufalls-Generatoren, ... aber eben nicht.
Und wo ist da der Unterschied zu einer URL ohne Querystring? Es gibt auch querystringlose Seiten, die sich ständig ändern. Wie der Browser damit umgehen soll, musst über die Cache-Angaben geregelt werden.
Mir erscheint cachen erst auf ausdruecklichen Wunsch hier sinnvoller.
Das verwechselst du vielleicht mit lokalem Speichern der Seite? Oder meinst du das aus Sicht des Servers? Dann hindert dich ja niemand, selbigen entsprechend zu konfigurieren. Alle Angaben zum Cachen und zur Gültigkeitsdauer eines Dokuments (Expires) sind optional und haben sich erst im Laufe der Zeit entwickelt. Client haben also zumindest früher schon immer geachcht wie sie wollten. Das kannst du nun sinnvoll finden oder nicht, aber ändern wirst du nichts daran.
-----
Jetzt hab ich doch nochmal die HTTP-Specs überflogen. In HTTP 1.0 habe ich zu GET in Bezug auf Cache nicht viel gefunden. Nur bei POST steht, dass ein solcher Request nicht gecacht werden darf.
HTTP 1.1 widmet der Cache-Problematik ein eigenes Haupt-Kapitel. Da steht auch was zu Nebenwirkungen von GET und HEAD.
"Unless the origin server explicitly prohibits the caching of their responses, the application of GET and HEAD methods to any resources SHOULD NOT have side effects that would lead to erroneous behavior if these responses are taken from a cache."
GET muss also ohne weitere Cache-Angaben immer daselbe liefern. Und dann kommt da die Ausnahme von der Regel:
"We note one exception to this rule: since some applications have traditionally used GETs and HEADs with query URLs (those containing a "?" in the rel_path part) to perform operations with significant side effects, caches MUST NOT treat responses to such URLs as fresh unless the server provides an explicit expiration time."
Also alles mit "?" muss, weil es einige Browser mal so gemacht haben es jetzt zum Standard erhoben wurde, ohne weitere Cache-Angaben als unfrisch angesehen werden.
dedlfix.