Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Cache für dyn. Inhalte und für Bilder

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Synonym
PostRank 10
PostRank 10
Beiträge: 3708
Registriert: 09.08.2008, 02:55

Beitrag von Synonym » 18.12.2009, 11:39

Hallo zusammen,

beim Titel wusste ich ehrlich gesagt nicht was sich da genau reinschreiben soll, aber es geht im wesentlichen um das Thema Cachen von dynamischen Inhalten (Server / Client) und dem Cachen von Bildern.

Ausgangssituation:

Server-1: Auf dem sind alle Bilder gespeichert. Diese werden auch mit "Expires + 6 Monate" ausgeliefert, damit diese nicht bei jedem Zugriff neu angefordert werden.

Die Bilder werden auf verschiedenen Domänen verwendet, die diese jeweils vom Server-1 laden. Soweit so gut.

Im Kundenbereich können die Bilder geändert werden. Ist selten, kommt aber vor. Diese geänderten Bilder sollen dann natürlich auch angezeigt werden. Der Browser-Cache verhindert das aber. Es kommt wieder das alte Bild, bis der "Expires" überschritten wird.

Lösungsansatz und daraus resultierende Probleme:
1. Den Bildern jeweils neue Namen geben ( etwa per time().jpg )
-> Problem. Das serverseitige Cachen der HTML-Seiten geht nicht mehr oder nur unzureichend, da das hinterlegte Cache-File dann bis zu seinem Ablauf einen falschen Bildnamen enthält

2. Den Bilder einen Parameter anhängen ( etwa 44.jpg?time() )
-> Problem. Die Bilder werden dann im Kundenbereich zwar sofort aktualliesert, aber auf den eigentlichen Webseiten nicht. z.B. "/bild/44.jpg" wäre dort noch immer das alte vom Browser-Cache. Um das zu umgehen müssten auch bei den ganzen Webseiten Parameter angehängt werden, aber dann funktioniert natürlich das serverseitige Cachen wieder nicht, da die Inhalte sich quasi sekündlich ändern.

3. Expires auf Server-1 abschalten
-> Problem: Die Bilder werden dann immer neu geladen. Sind einige tausende und würde unnötig Last und Traffic erzeugen

Hm, nun stehe ich da wirklich vor einem Problem und weiß nicht wie ich das angehen soll.


Ein sich ständig ändernder Dateiname ist eigentlich unschön, denn die Bilder werden auch extern verlinkt und würden so immer wieder zu Fehlern führen. Server-Cache geht auch nicht.

Mit Parametern funktioniert es nicht auf den einzelnen Webseiten oder der Server-Cache geht nicht.

Hat da einer von euch einen Ansatz? Ich sehe da wohl den Wald vor lauter Bäumen nicht mehr?

Nachtrag, da eben erst bemerkt:
Ein Bild ist online. Wird im Browser angezeigt. Dann wird das Bild im Kundenbereich geändert. JETZT lösche ich manuell den Cache vom FireFox (Disk cache device -> Number of entries: 0). Ok, der Browser-Cache ist leer. Rufe ich das Bild nun nochmal auf, denn kommt dennoch das alte :-? Abgesehen von meinen oben genannten Problemen, wo kommt da denn nun das alte Bild her?

Danke und Gruß,
Ingo

Anzeige von ABAKUS

von Anzeige von ABAKUS »

Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

TBT
PostRank 5
PostRank 5
Beiträge: 306
Registriert: 13.02.2008, 16:11

Beitrag von TBT » 18.12.2009, 18:06

dann nimm doch zusätzlich zu mod_headers beim Apache noch "etag",
der aktualisiert sofort, wenn sich die Datei ändert

Code: Alles auswählen

# ETag einschalten für Bilder
<FilesMatch "&#40;.*\.png|.*\.gif|*\.jpg&#41;">
	FileETag mtime
</FilesMatch>

Synonym
PostRank 10
PostRank 10
Beiträge: 3708
Registriert: 09.08.2008, 02:55

Beitrag von Synonym » 18.12.2009, 18:38

@tbt
ok, das ist mal eine Antwort. Muss ich mal testen ob ich das hinbekomme. Die normalen Seiten haben alle schon einen ETag, bei den Bilder weiß ich es nun gar nicht genau.

Hm, also habe das jetzt mal getestet. mod_header war gar nicht aktiv. Habe es nun mal aktiviert und eine Test-Header-Zeile einfügen lassen. Die ist da, funktioniert also.

Aber das mit dem ETag geht nicht. Weder mit der Schreibweise von Dir noch mit der aus dem Apache-Handbuch. Der ETag bleibt der gleiche, auch wenn zwischenzeitlich das Bild schon mehrfach ausgetauscht wurde. Andere Größe, anderes Datum, gleicher Name.