Ich versuche gerade meinem Nginx das caching der fastcgi-Anfragen beizubringen. Sinn davon ist, dass der Shop, solange kein Session-Cookie existiert, komplett aus dem Cache bedient wird (dann ist das schneller).
Das funktioniert soweit so gut, nur wird nichts gecacht, wenn der Shop ein setcookie() macht - und das tut er bei jedem Aufruf: In der oxlang.php ist in der Methode getBaseLanguage() ein
drin, welches mir das caching verhindert. Warum bekommt der user denn bei jedem Aufruf ein “neues” Cookie gesetzt? Hier in meinem Falle ist es nur ein einsprachiger Shop, aber auch generell: Für was braucht man das Cookie? Kann ich es [A] in meinem Fall weglassen und [B] auch bei einem mehrsprachigen Shop weglassen?
[QUOTE=Marco Steinhaeuser;101269]ich denke, der Cookie wird gesetzt, damit Besucher des Shops immer wieder auf die einmal ausgewählte Sprache zurückgelangen.[/QUOTE]
Diese Vermutung ist naheliegend.
Die Frage ist, warum bei jedem Aufruf ein neues Cookie gesetzt wird - auch wenn es keine Sprache zum Auswählen gibt, auch wenn ein identisches Cookie schon da ist, auch wenn die “Cookie-Sprache” die gleiche ist, die auch heuristisch (z.B. language-header) herausgefunden wurde.
Ein Cookie ergibt nur dann Sinn, wenn es mehrere Sprachen gibt und der Benutzer explizit eine andere Sprache wünscht als die, die mittels Accept-Language-Header gewünscht wird. Ist das der Fall, dann ergibt das setzen eines Cookies nur dann Sinn, wenn noch kein identischer Cookie da ist.
In den meisten Fällen ist die Sprache sogar über die aufgerufene SEO-URL eindeutig bestimmbar. Nur auf der Startseite ist es nicht eindeutig, sodass ich vermute, dass das Cookie dafür nötig ist. Habt ihr schon mal ausprobiert, was passiert, wenn man die Zeile einfach auskommentiert? Ich vermute, dass der Shop in fast allen Fällen trotzdem noch richtig funktionieren müsste, außer der Besucher möchte die Startseite immer in einer anderen Sprache sehen als sein Browser.