ChrisB: Caching

Beitrag lesen

Hi,

Für jeden Wochentag ändern sich die Farben und das Hintergrundbild leicht, also habe ich für jeden Tag ein Stylesheet und binde das je nach Wochentag ein.

Also nur minimale Aenderungen - die du hoffentlich in ein eigenes Stylesheet ausgelagert hast, so dass der Rest - die gleich bleiben Formatierungen - in einer anderen Ressource nach wie vor gecached werden koennen?

DOch da hatte mir das Caching einen Strich durch die Rechnung gemacht, also habe ich es wie hier gestern an anderer Stelle diskutiert gelöst,

Du redest von https://forum.selfhtml.org/?t=166760&m=1087532

indem ich immer die wochentag.php als Stylesheet einbinde, bei der ich mit geeigneten Headern das Caching untersage und je nach Wochentag mit require den entsprechenden Stylesheet hole. Funktioniert auch soweit. Doch bei dieser Methode werden ja die Wochentag-Stylesheets auch nicht gecached oder?

Natuerlich nicht - du lieferst sie ja immer unter der selben Ressource aus, und hast deren Caching explizit unterbunden.

Ich meine die dürfen/sollen ruhig gecached werden, weil in einer Woche braucht man sie ja wieder. Wie kann man das lösen?

So, wie ich es im anderen Thread bereits vorschlug:
Nicht die jeweiligen CSS-Daten per require in die Ressource einbinden, sondern lediglich einen Redirect auf andere, separate Ressourcen ausgeben, und fuer letztere dann natuerlich wieder das Caching erlauben.

Und muss ich nicht explizit in den Headern angeben, dass es sich um css handelt?

Wenn du einen Redirect auf "normale" .css-Dateien machst, sollte dein Server die von selber mit dem passenden Content-Type-Header (text/css) ausliefern.
Wenn du CSS-Code in einem PHP-Script o.ae. ausgibst, dann loese diesen Header explizit selber aus, damit der Browser weiss, was er da bekommt.

Aber wie gesagt, dass ist hier sowieso nicht noetig, wenn man es wie von mir beschrieben umsetzt.

Und wie ist es nun mit einzelnen Bereichen einer Seite - kann ma hierfür das Caching unterbinden?

Wenn sie Teil der selben Ressource sind, die das HTML-Dokument darstellt, dann natuerlich nicht.

Ich habe nämlich einen Div in dem zufällig ein User angezeigt wird, doch wenn das ganze gecached wird, sieht man ja immer den gleichen User. Hat hierfür jemand eine Idee, ohne natürlich das Caching für die gesamte Seite zu verbieten,weil es wäre wohl Quatsch wegen 5kb veränderlichem Inhalt das Caching von weiteren etwa 80kb zu verbieten.

Entweder einen Iframe/ein Object nutzen, in dem eine eigenstaendige Ressource eingebunden wird - oder das ganze per Javascript dynamisch ins Dokument schreiben lassen es klingt ja nicht danach, als ob es essentiell waere).

Und zu guter Letzt: Wie prüft man am besten, was alles gecached wird

In dem man sich die Header - sowohl Request als auch Response - anschaut, bspw. mit der LiveHTTPHeaders-Extension fuer den FF, oder auch mit FireBug.

MfG ChrisB