Seite 1 von 1

Metaname "no cache"

Verfasst: 24.07.2011 12:14
von Die Mathematik
Hallo,

ich habe gerade große Probleme mit meinem Forum (siehe Mod Support) und da im Moment noch keine Antwort gekommen ist widme ich mich mal wieder meiner Homepage.

Ich bastle seit einiger Zeit ein bisschen mit den Metanames herum. Ich habe eine Übersicht aller oft genutzten Metanames im Internet gefunden. Dabei bin ich auf folgenden gestoßen:

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">

Funktion hat geschrieben:Mit diesem Befehl verbieten Sie den Proxy-Servern Ihre Seite zu cachen. Benutzen Sie diesen Tag zusammen mit dem HTTP-EQUIV: Expires-Tag. So wird erreicht, daß die Seite immer direkt vom Server geladen wird und der Benutzer immer die neuste Version sieht.
Beschreibung hat geschrieben:Sie sollten diesen Befehl auf Seiten benutzen, die sich oft ändern. Ein Gästebuch, ein Chat oder eine "Neuigkeiten"-Seite können diesen Tag gebrauchen.
Da steht dieser Befehl soll benutzt werden, bei Seiten die sich oft ändern, dazu zählt ja auch ein Forum. Aber mir macht die Tatsache ein bisschen Angst, dass im Forum so viel mit Cache gearbeitet wird.

Kann man diesen Code bedenkenlos einbauen oder sollte man das bei Foren lieber lassen?

Re: Metaname "no cache"

Verfasst: 24.07.2011 15:38
von gn#36
Du musst hierbei unterscheiden zwischen dem Cache auf deinem Server, dem Browsercache sowie dem Cache eines Proxy Servers.

Dieser Header beeinflusst das Verhalten deines Servers in keiner Weise, d.h. dein Foren Cache wird danach nicht anders funktionieren als vorher.

Ein Proxy Server wird oft dazu eingesetzt, den Traffic aus einem Netzwerk heraus zu reduzieren. Das geschieht, indem nicht der individuelle PC die gewünschte Website direkt anfordert, sondern ein Proxy Server. Dieser speichert die Seite zwischen und liefert sie an Clients aus, die die Seite anfragen. Passiert das oft hintereinander liefert der Proxy immer eine Kopie aus seinem lokalen Speicher aus, bis irgendwann wieder ein Update fällig wird und der Proxy prüft, ob seine Seite noch aktuell ist. Sofern der Proxy diese Anweisung beachtet könnte es also sein, dass er diese Seite nicht speichert und folglich bei jedem Abruf neu von deinem Server anfordert (und also z.B. mehr Traffic bei dir verursacht und außerdem so für Proxy Nutzer die Aufbauzeit der Website verlängert).

Laut Microsoft Seite (http://support.microsoft.com/kb/234067) verhindert die Anweisung das Caching im Internet Explorer, d.h. dieser holt sich die Informationen auch immer wieder neu vom Server, was ebenfalls den Seitenaufbau verlangsamt, wenn man schon öfter auf der Seite war. Wenn sie fehlt und die Gültigkeitsdauer der Website auf -1 steht (also immer sofort abläuft), dann wird gecacht und bei jedem Aufruf nur abgefragt, ob sich was geändert hat (und nur dann die Seite komplett neu geladen). Das dürfte deutlich schneller gehen als jedes mal komplett neu zu laden.

Seiten die weitgehend statisch sind sollten besser ein Ablaufdatum erhalten das für seltenere Updates sorgt. Seiten die sich häufig ändern brauchen diese Anweisung auch nicht zwingend, sollten aber ein sehr kurzes Ablaufdatum haben (Microsoft schlägt sogar -1 vor, ob das für andere Browser gut ist habe ich nicht überprüft, eigentlich ist es wirklich eine Proxy Anweisung und nicht für den Browser gedacht). no-cache ist für Seiten mit Logins, Formularen oder ähnliches sinnvoll, wo ein Proxy die Funktionsfähigkeit der Website verhindern könnte, also z.B. auch für ein Forum.

Also vielleicht noch mal als konkretes Beispiel: Du hast eine Website mit dynamischem Inhalt, dieser ist aber nicht interaktiv (also kein Gästebuch, keine Kommentarmöglichkeiten, reine Inhalte, die du mit einem Adminbereich in deinem CMS erzeugst). In diesem Fall brauchst du die Anweisung nicht unbedingt, denn das schlimmste was passieren könnte ist, dass Proxynutzer eine etwas veraltete Website von dir sehen. Je besser du die Gültigkeitsdauer an deine Aktualisierungen anpassen kannst, desto geringer ist die Gefahr dafür (wenn du also jeden Abend um 22 Uhr einen neuen Artikel veröffentlichst, dann kannst du dein Ablaufdatum so einstellen, dass die Seiten immer zu dieser Zeit ablaufen und die Proxys sich sofort die neue Version holen). So sparst du Traffic und trotzdem haben alle Leute immer eine aktuelle Version deiner Website.

Wenn du dagegen ein Forum hast oder ein Gästebuch, dann macht eine Speicherung im Proxy keinen Sinn, denn jedes vom Server erzeugte Formular funktioniert genau ein mal mit einem Browser (zumindest bei phpBB), muss also sowieso neu erzeugt werden. Darüber hinaus kann sich die Seite innerhalb von Sekunden mehrfach ändern (wenn es einen Zugriffszähler gibt, dann ändert sie sich sogar bei jedem Zugriff). Links und Formular URLs enthalten ggf. eine Session ID die nicht gespeichert werden sollte. Hier macht die Verwendung von no-cache also Sinn.

Der Cache von phpBB im Vergleich dazu sorgt nur dafür, dass die Seiten schneller ausgeliefert werden können, legt aber nicht fest, was in diesen Seiten steht. Für jede anzuzeigende Seite werden Masken erzeugt, in denen kein Text steht, dieser wird dann nachher vor der Auslieferung der Seite eingefügt. So lässt sich die Übersetzung realisieren und so wird auch die Darstellung der verschiedenen Themeninhalte realisiert: Man verwendet die selbe Maske mit verschiedenen Inhalten.

Re: Metaname "no cache"

Verfasst: 24.07.2011 15:40
von Die Mathematik
Danke für diese Umfangreiche Antwort. Kurz gesagt. Der Einbau macht nichts schlimmes, aber er verlangsamt das Forum. Ich lasse das lieber. :ugeek:

Re: Metaname "no cache"

Verfasst: 24.07.2011 19:06
von gn#36
Das Forum sendet diesen Header selbst. Allerdings direkt als Header und nicht erst im HTML Quelltext. Wie schon gesagt ist das bei dynamischen Seiten auch sinnvoll. Aber nicht unbedingt bei statischen oder quasi statischen.

Re: Metaname "no cache"

Verfasst: 24.07.2011 19:20
von Die Mathematik
OK, danke für die Information.