Ich habe einen Seitencache ausgeführt (Varnish) und die VCL setzt den X-Cache-Header auf HIT oder MISS, wenn sie die Seite liefert. Während ich debugge, bin ich es leid, die Seitenköpfe in meinem Browser zu finden, um zu sehen, ob die Seite ein Treffer oder ein Fehlschlag war; Ich möchte den Seitenhintergrund (oder Rand) ändern lassen.
Varnish lässt mich nicht den Körper verändern, nur die Header und Cookies.
Ich könnte die VCL ändern, um einen Cookie zu setzen, und dann ein wenig Javascript in ein Plugin implementieren, um den Cookie zu überprüfen und den Hintergrund zu ändern … aber ich denke, dass es eine elegantere Methode dafür geben muss.
Hat jemand schon einmal so etwas gemacht und wie hat es geklappt?
Ich denke, etwas eleganter wäre es, die Stile über den Link-Header zu senden. Dies beinhaltet nicht das Senden des Cookies oder die Verwendung von Javascript.
Aber das würde nur mit Firefox funktionieren:
sub vcl_deliver { if (obj.hits > 0) { set resp.http.X-Cache = "cached"; } else { set resp.http.X-Cache = "uncached"; set resp.http.Link = ";rel=stylesheet;type=text/css;media=all"; } }
Sie werden “Race Conditions” mit dem Cookie-Ansatz erleben, da dieser Status von allen Tabs geteilt wird, die die Site durchsuchen. Der beste Ansatz wäre:
hit
/ miss
Flag in req.http.whatever
. /color-hack.html
auf allen Ihren Seiten ein ESI-Fragment ein (zB /color-hack.html
). /color-hack.html
während vcl_recv
, zu vcl_synth
zu vcl_synth
und abhängig vom Wert des Flags in req_top.http.whatever
HTML oder JavaScript zu req_top.http.whatever
. Dann können Sie dies auf der Client-Seite verwenden, um die Farbe des Tempos zu ändern, was auch immer Sie tun möchten. Ich weiß, dass es ein wenig verworren aussieht, aber es sollte einfach zu implementieren sein, wenn Sie mit ESI und synthetischen Antworten vertraut sind.