johannes malo: Caching

Guten Morgen,

ich bastel gerade an einer templatebasierten Seite. Nun habe ich einige Frgane zum Caching:

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. 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, 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? Ich meine die dürfen/sollen ruhig gecached werden, weil in einer Woche braucht man sie ja wieder. Wie kann man das lösen? Und muss ich nicht explizit in den Headern angeben, dass es sich um css handelt? Habe hier leider nichts zu gefunden.

Und wie ist es nun mit einzelnen Bereichen einer Seite - kann ma hierfür das Caching unterbinden? 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.

Und zu guter Letzt: Wie prüft man am besten, was alles gecached wird und wie sich die Datenmenge beim zweiten Aufruf verringert? Hat jemand ein geeignetes Toll/Plugin für Firefox etc?

Gruß

  1. 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

  2. Hallo,

    Und wie ist es nun mit einzelnen Bereichen einer Seite - kann ma hierfür das Caching unterbinden? 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.

    Meine Erfahrung ist folgende: HTML-Seiten werden nicht gecached, aber alle anderen beteiligten Komponenten (Stylesheets, Javascripts). Daher kannst du die Seite an sich ändern wie du willst, sie wird immer anders ankommen. Die Stylesheets würde ich deswegen auch einfach immer anders einbinden, also das href-Attribut des link-Elements je nach Wochentag ändern.
    Müsste eigentlich so klappen.

    Und zu guter Letzt: Wie prüft man am besten, was alles gecached wird und wie sich die Datenmenge beim zweiten Aufruf verringert? Hat jemand ein geeignetes Toll/Plugin für Firefox etc?

    LiveHTTPHeaders und Firebug geben dir Infos.

    Schöne Grüße,
    Willi