PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ISP http Cache zum Neu-Laden "überreden"



Newbie314
03.01.10, 11:42
Hallo !

Habe zu Neujahr einige alte Beiträge aus meiner Website gelöscht und neue eingetragen.. jetzt erhalte ich Rückmeldungen dass die gelöschten Dinge zwar nicht mehr verfügbar sind, die neuen Einträge aber noch nicht da, mit anderen Worten: dank der ISP Caches ist meine Website zu einer Zeit in der recht viele Leute darauf zugreifen wollen inkonsistent.

(Bei mir: Congstar, funktioniert... diverse Anonymisierungs-Proxies: funktioniert. 1&1: der cecachte alte Inhalt.. ca. 10 Stunden nach der Änderung.... meine Index- Seite hat ca. 20 K, das dürfte UI eigentlich nicht in den Ruin treiben.... )

Ich habe etwas gegoogled und folgende Anweisungen in den Code der index.html (im <HEAD> Bereich) eingefügt um das Problem in Zukunft zu reduzieren:



<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="expires" content="0">


Frage: bringt das auch bei Provider Cache was oder ignorieren die das einfach ? Lässt sich von meiner Seite aus (nur html, keine Skripte) da noch etwas tun ? Oder soll ich die Benutzer auffordern ihre Provider zu nerven ? :ugly:


Edit: gerade erhielt ich die Rückmeldung dass "Ctrl + F5" im Firefox bei den Betroffenen zur erfolgreichen Aktualisierung führt. (Hatte ich ergoogled, jetzt wurde die Wirkung bestätigt.. ist nur ein wenig lästig....)

TrekkieMan
03.01.10, 17:45
Ich glaube du mischst hier ein paar dinge zusammen.

Es gibt 2 Cache Arten. Den Browser-Cache und den DNS Cache.

Dein ISP hat sicher keinen Inhalts-Cache für die Webseiten, aber einen DNS-Cache. Der hat aber nichts mit den Inhalten deiner Seiten zu tun.

Lösch einfach mal den Browsercache und schau was passiert.

derRichard
04.01.10, 00:08
Dein ISP hat sicher keinen Inhalts-Cache für die Webseiten, aber einen DNS-Cache. Der hat aber nichts mit den Inhalten deiner Seiten zu tun.


ich habe schon einige provider gesehen, die einen transparenten squid vorgeschaltet haben.

//richard

Newbie314
04.01.10, 01:06
@Richard: anscheinend gehört 1&1 mit dazu.

Das Phänomen genauer: gestern Nacht habe ich auf meinem Webspace aufgeräumt: alte Galerien gelöscht, eine neue eingestellt.

Heute erhielt ich einen Anruf einer Freundin: die Partyfotos seien nicht online. Nach Nachfragen hat sich herausgestellt dass die Indexseite mit den Galerien des letzten Jahres noch angezeigt wurde, die neue mit den neuen Fotos nicht, dass sie aber wenn sie die Bilder einer der alten Galerien anklicken wollte korrekterweise ein "not found" kam.

Wiederholtes Neuladen (das beim Browser Cache normalerweise funktioniert) brachte nichts.


Laut Google "cachen" einige Provider Inhalte um Traffic-Gebühren zu sparen.


Ein "Ctrl + F5" von ihrer Seite brachte dann die komplette, korrekte neue Ansicht.

Meine Frage ist wie ich mit reinem html (also ohne irgendwelche Skript Tricks) das Risiko dass meine Indexseite ewig lange "gecached" wird minimieren kann.


Mein ISP (Congstar) scheint keinen "Inhalts Cache" zu verwenden, Änderungen auf einer der Websites die ich betreue sehe ich immer sobald ich den Browser Cache erneuere....

drcux
04.01.10, 01:53
Ein "Ctrl + F5" von ihrer Seite brachte dann die komplette, korrekte neue Ansicht.

Hm, dann liegt das aber nicht am ISP, denn Strg-F5 erzwingt nur ein erneutes Laden ohne Browser-Cache.

Roger Wilco
04.01.10, 01:57
@Richard: anscheinend gehört 1&1 mit dazu.
Nein, gehört es nicht.


Wiederholtes Neuladen (das beim Browser Cache normalerweise funktioniert) brachte nichts.

Ein "Ctrl + F5" von ihrer Seite brachte dann die komplette, korrekte neue Ansicht.
Das "wiederholte Neuladen" hat in diesem Fall auf die veralteten Daten im Browsercache zugegriffen. Allein, dass es durch Strg+F5 (was bei den meisten Browsern für ein forciertes Umgehen des Caches sorgt) alles funktionert, hätte dir doch ein entsprechendes Signal geben müssen. Warum sollte sich ein transparenter cachender HTTP-Proxy denn darum kümmern, was du oder irgendjemand anderes auf seinem Rechner für Tasten drückt? :ugly:

Newbie314
04.01.10, 11:00
Danke ! Dann stell ich bei dieser Freundin den Firefox anders ein.....

Die Behauptung dass Strg + F5 beim ISP neue Daten anfordert fand ich übrigens über Google... bin also nicht der Einzige der da auf dem Holzweg war ;-)


Wenn der Browser Cache die Ursache war sollten die Tags oben jedenfalls funktionieren ....

Vielen Dank !

derRichard
04.01.10, 12:15
Warum sollte sich ein transparenter cachender HTTP-Proxy denn darum kümmern, was du oder irgendjemand anderes auf seinem Rechner für Tasten drückt? :ugly:
doch. der browser sendet dann im http-request noch den header


Cache-Control: no-cache

mit.

//richard

Roger Wilco
04.01.10, 12:17
Danke Richard, gut zu wissen.

Newbie314
04.01.10, 12:36
Danke Richard!

... da in den Tags die ich oben zitiert habe dieser Befehl mit drinnen ist war das Einfügen dieser Tags in die Seite wohl das beste was man da tun kann.....

Roger Wilco
04.01.10, 12:43
Du verwechselst HTML-Metadaten und HTTP-Header…

derRichard
04.01.10, 12:45
wenn deine seite php verwendet, dann würde ich sowas machen:


header("Cache-Control: no-cache, must-revalidate");


auf php.net finden sich noch mehr solcher beispiele...
hth,
//richard

Roger Wilco
04.01.10, 12:50
Das kann man auch direkt mit dem Apache httpd und der Direktive Headers (http://httpd.apache.org/docs/2.2/mod/mod_headers.html#header) erreichen. Außerdem empfiehlt sich mod_expires (http://httpd.apache.org/docs/2.2/mod/mod_expires.html).

Allerdings finde ich es fraglich, das clientseitige Caching komplett zu verbieten (naja, eigentlich ist es ja nur ein Vorschlag für den Client). Das hat schon einen gewissen Sinn…

Newbie314
04.01.10, 12:51
Hallo Richard !

php kann ich zwar einsetzen, habe das aber bisher vermieden.. bin bisher bei "plain html". Wenn es nicht allzu nervige Problemchen gibt werde ich dabei bleiben (Skripte absichern etc...).

Falls das Problemchen wieder auftaucht (und nicht nur einmal im Jahr ;-) ) werde ich mir deinen Link mal ansehen.

Newbie314
04.01.10, 12:53
Du verwechselst HTML-Metadaten und HTTP-Header…

Wenn auf meiner Index Seite diese Anweisung steht müsste das doch den Effekt haben dass wenn ein Nutzer "neu laden" klickt die Seite vom Server geholt wird und nicht von irgendeinem Cache (lokal oder Proxy (falls vorhanden)).

Somit müsste das doch den gleichen Effekt haben wie wenn ein Nutzer statt "neu laden" "ctrl + F5" drückt ?

(Mit anderen Worten: einem Browser oder einem http Proxy sollte es doch egal sein ob die Anweisung "no cache" im http header oder im <head> </head> Bereich der abgeholten Seite steht .... ?)

Wenn nicht stehe ich verständnismäßig wirklich komplett im Wald ...


@Roger: ich habe einfach nur Webspace gemietet.. einen Server würde ich mir nicht antun, zu viel Einarbeitungszeit. Meine Möglichkeiten sind somit beschränkt, den Apache kann ich nicht konfigurieren....


Zum "No Cache": wie gesagt, die Seite hat weit unter 20 K... soll auch für Handy-Benutzer und Modem-Freunde einigermaßen verwendbar sein, daher bringt der Cache bei dieser Indexseite nicht viel...

Roger Wilco
04.01.10, 13:06
Wenn auf meiner Index Seite diese Anweisung steht müsste das doch den Effekt haben dass wenn ein Nutzer "neu laden" klickt die Seite vom Server geholt wird und nicht von irgendeinem Cache (lokal oder Proxy (falls vorhanden)).
Überlegen wir doch mal: Was wird genau gecached und wo stehen deine HTML-Metadaten?

Kleiner Tipp: Die Antwort ist zweimal die gleiche.

Newbie314
04.01.10, 13:23
Eine Seite die diese Tags enthält sollte doch direkt abgeholt werden....

Der Browser findet die Seite im Cache, sieht dass die Tags "no cache" im Header sind, und holt sie dann direkt vom Server.

Genauso ein Proxy (falls vorhanden)?

Wenn nicht: was ist sonst der Sinn dieser Tags ?


(Implementierungstechnisch wäre es natürlich besser wenn eine Seite mit diesen Tags gar nicht erst in irgendeinem Cache gespeichert wird...)

Wene
04.01.10, 17:02
Der Browser findet die Seite im Cache, sieht dass die Tags "no cache" im Header sind, und holt sie dann direkt vom Server.

Nicht ganz. Wenn in den Medadaten steht dass die Seite nicht gecached werden soll wird sie gar nicht erst im Cache abgelegt. Weder lokal noch beim Provider.

Wenn aber schon einmal eine Seite die diesen Metatag nicht hatte im Cache abgelegt wurde, wird sie eben nicht jedes Mal neu vom Server geladen. Daher erfährt der Browser auch nichts von dem neuen Tag.

Newbie314
05.01.10, 11:25
Wene: danke, das Verhalten das du beschreibst ist genau das was ich erwartet habe.. dann passt das mit den Tags so....