Hallo!
Man kann den nginx-Server-Cache in den 64-Bit-Tarifen ja über einen Eintrag in der htaccess abschalten (s. https://www.df.eu/de/support/df-faq/...tory/#c24136):
Dies möchten wir auf allen unseren Seiten haben.
Nun habe ich das Problem, dass ich manchmal auf einigen Seiten einen zusätzlichen Cache-Control-Header senden muss. Dies entscheidet sich aber - unabhängig von z.B. dem Dateinamen der aufgerufenen Seite - im PHP, dort steht dann etwas wie:
Das Problem ist, dass der in PHP-gesetzte Header aber niemals nicht im Browser ankommt, weil er durch den in der htaccess gesetzten Header überschrieben wird.
Es kommt also immer nur Cache-Control: s-maxage=0, egal, was ich im PHP setze.
Was für Lösungsmöglichkeiten habe ich hier? Ideal wäre, wenn ich das komplett in PHP machen könnte:
aber wenn ich die Doku richtig verstehe, MUSS der Befehl in der htaccess liegen, damit der nginx-Cache auch wirklich abgeschaltet wird.
Wie kann ich das lösen?
Man kann den nginx-Server-Cache in den 64-Bit-Tarifen ja über einen Eintrag in der htaccess abschalten (s. https://www.df.eu/de/support/df-faq/...tory/#c24136):
Code:
Header always set Cache-Control: s-maxage=0
Nun habe ich das Problem, dass ich manchmal auf einigen Seiten einen zusätzlichen Cache-Control-Header senden muss. Dies entscheidet sich aber - unabhängig von z.B. dem Dateinamen der aufgerufenen Seite - im PHP, dort steht dann etwas wie:
PHP-Code:
if ($dataHasChanged) {
header('Cache-Control: no-store, no-cache, must-revalidate, s-maxage=0');
}
Es kommt also immer nur Cache-Control: s-maxage=0, egal, was ich im PHP setze.
Was für Lösungsmöglichkeiten habe ich hier? Ideal wäre, wenn ich das komplett in PHP machen könnte:
PHP-Code:
if (dataHasChanged) {
header('Cache-Control: no-store, no-cache, must-revalidate, s-maxage=0'); // Schalte nginx-Cache aus UND sende weitere Cache-Controls
}
else {
header('Cache-Control: s-maxage=0'); // Schalte nur nginx-Cache aus
}
Wie kann ich das lösen?
Kommentar