Contao-Camp 2024
Ergebnis 1 bis 8 von 8

Thema: Cache mit Contao 4.7 funktioniert nicht

  1. #1
    Contao-Fan Avatar von lomex
    Registriert seit
    03.07.2009.
    Ort
    Werne
    Beiträge
    791
    User beschenken
    Wunschliste

    Standard Cache mit Contao 4.7 funktioniert nicht

    Ich wollte gerade mal ein wenig mit Fragments rumspielen, aber ich schaffe es noch nicht einmal, eine Seite gecached auszuliefern.

    Egal was ich mache, die Seite lädt immer neu. In der Seitenstruktur habe ich die Cachezeit auf 1 Jahr / 30 Tage eingestellt. Im Seitenlayout ist alles deaktiviert. Es wird nur ein Artikel/Inhaltselement geladen mit einem Insert-Tag, um mir die aktuelle Uhrzeit auszugeben.

    Der Response Header enthält immer "Cache-Control: must-revalidate, no-cache, no-store, private" und es wird mir die aktuelle Uhrzeit angezeigt (die Sekunden zählen weiter).

    Ich habe Contao 4.7.4 auf einem lokalen Mac mit Apache 2.4 (der Contao Standard .htaccess), PHP (mit Xdebug und Opcache, beides Abschalten hat auch nichts gebracht) und MariaDB.
    var/cache/prod habe ich natürlich gelöscht (immer wieder).

    Wo habe ich den Gedankenfehler bzw. was mache ich falsch?

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.028
    Partner-ID
    10107

    Standard

    Bist du im Backend eingeloggt während der Tests? Developer Tools des Browsers geöffnet?

  3. #3
    Contao-Fan Avatar von lomex
    Registriert seit
    03.07.2009.
    Ort
    Werne
    Beiträge
    791
    User beschenken
    Wunschliste

    Standard

    Ja, ich war angemeldet und die Developer Toolbar war geöffnet (Cache aber nicht deaktiviert).
    Jetzt abgemeldet und Toolbar geschlossen, var/cache/prod gelöscht.
    Die Uhrzeit wird weiter aktualisiert :-(

  4. #4
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.075
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Wäre vielleicht mal hilfreich, wenn jemand der sich mit den Cache-Neuerungen auskennt mal einen Überblick geben könnte, wie sich das genau auswirkt. @Toflar hat - so glaube ich jedenfalls mich zu erinnern - irgendwann mal irgendwo geschrieben, man können die Cache-Zeit jetzt im Prinzip beliebig hochsetzen, da die Seite bei Änderungen nötigenfalls trotzdem neu erzeugt wird. Das betrifft nach meinem Verständnis aber nur den Servercache oder liege ich da falsch? Wenn ich dem Browser mitteile, dass er die Seite (im Browsercache) einen Monat lang cachen darf, dann lädt der die Seite halt für den nächsten Monat aus seinem Cache, egal ob sich Contao auf dem Server auf den Kopf stellt und mit den Füßen wackelt oder was auch immer. Der Server wird in dem Fall ja gar nicht kontaktiert, was ja auch in vielen Fällen so gewollt ist. Was mache ich jetzt also sinnvollerweise mit den Browsercache-Einstellungen? Ich weiß, viele hatten den schon immer deaktiviert, was ich aber bei einem kleineren Shared Hosting bei nur selten geänderten Seiten kritisch sehe. Der beste Request für das Hosting ist da der, der (für den Server) gar nicht erst stattfindet.

    Der interessante Part wäre also wohl der Servercache. Wie wirkt sich dieses neue/verbesserte Caching z.B. auf gecachte/ungecachte Insert-Tags aus? Was passiert mit geschützten Seiten für Mitglieder (FE-Benutzer)? Werden die jetzt auch gecacht? Bei Contao 3 waren die ja komplett außen vor und wurden nie gecacht. Wenn ich die Servercache-Zeit sowieso beliebig hoch einstellen kann, warum gibt es dann die Einstellung überhaupt noch? Wenn es irgendwo schon eine entsprechende Information gibt, die ich noch nicht gefunden habe, dann reicht mir auch der Link oder geeignete Suchwörter.

  5. #5
    Contao-Fan Avatar von lomex
    Registriert seit
    03.07.2009.
    Ort
    Werne
    Beiträge
    791
    User beschenken
    Wunschliste

    Standard

    Also gerade noch einmal in einer frischen Contao 4.7.4 Installation, diesmal unter Windows mit nginx getestet - gleiches Spiel.
    Die Seite wird nicht gecached (bin abgemeldet und var/cache/prod gelöscht). In der Seitenstruktur steht der Servercache auf 1 Jahr, der Client Cache auf 0.

    Also irgendwie wäre meine Erwartungshaltung, dass die Seite durch die Einstellung in der Seitenstruktur gecached wird. Komisch.

  6. #6
    Contao-Fan Avatar von lomex
    Registriert seit
    03.07.2009.
    Ort
    Werne
    Beiträge
    791
    User beschenken
    Wunschliste

    Standard

    1.
    Kein Bug. Bestimmte InsertTags (date) werden in einem ungecachten ESI Fragment gerendert (es wird also nur dieser Teil neu generiert, der Rest kommt aus dem Cache). Egal ob das InsertTag mit einem "uncached" Flag versehen wird oder nicht. Übrigens ein schönes Beispiel, wie man abseits der neuen Abstract Controller für Frontend-Module und Inhaltselemente ESI Fragment erzeugt.

    2.
    Was mich lokal noch gewundert hat, dass keine Dateien im Ordner http_cache erzeugt wurden.
    Dazu habe ich diesen Hinweis hier gefunden.
    Sobald also eine Session gestartet wird (Einloggen im Backend), wird im Frontend nicht mehr gecached. Das Session-Cookie bleibt aber auch nach dem Ausloggen erhalten - es wird weiterhin nicht gecached.
    Erst nachdem der Browser neu gestartet wird oder das Cookie manuell gelöscht wird, wird wieder gecached.

    Bedeutet das auch, dass ein User im Frontend, der sich dort im Mitgliederbereich einmal eingeloggt hatte, nie eine Seite aus dem Cache bekommt, wenn er den Browser nicht zwischendurch mal schließt? Das habe ich noch nicht getestet.

  7. #7
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.028
    Partner-ID
    10107

    Standard

    Das könntest du ja auf GitHub diskutieren (also Punkt 2).

  8. #8
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.075
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Also ich hänge jetzt auch an dem Punkt, dass meine Seiten clientseitig offenbar nicht gecacht werden mit Contao 4.7.5. Eingetragen in der Seitenstruktur ist 1 Tag / 1 Stunde Cachezeit. Nichts zu machen, aiuch nach Schliessen und neu Öffnen des Browserfensters. Komme da auf keinen grünen Zweig. Wie muss ich das jetzt einstellen, dass da nicht immer max-age=0 kommt? Muss da noch was in der .htaccess ergänzt werden? (mod_expire...)

    Edit: Nun bekomme ich aus welchem Grund auch immer das maxage=3600 wie erwartet. Allerdings lädt der Browser in den Entwickler-Tools die Seite nicht aus dem Cache, obwohl der Cache in den Firefox Entwickler-Tools nicht deaktiviert ist.

    Edit2: Zu blöd zum Testen. Man sollte vielleicht nicht auf "aktuelle Seite neu laden" klicken, wenn man die Seite aus dem Browsercache haben will.
    Geändert von tab (10.05.2019 um 23:50 Uhr)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •