Ich habe Varnish vor mehreren Webservern, ich kann sie als native Version von Varnish oder durch Upstream-Prüfungen über Nginx ausführen, aber nur statische Inhalte werden zwischengespeichert (keine Überraschung), wobei auch Abfragezeichenfolgen beachtet werden, d. h.
/main.css?v=1
und /main.css?=v2
werden separat zwischengespeichert
Ich aktualisiere die Server einen nach dem anderen. Tatsächlich kann das alles nicht gleichzeitig erfolgen, ohne dass es zu Ausfallzeiten kommt, wie bei der allgemeinen Bereitstellung.
Wird main.css
aktualisiert ameinsBackend und ich sende eine Anfrage entsprechend der neuen Webseitenversion an Varnish und die Anfrage. /main.css?=v2
Es kann sein, dass es immer noch nach einer Datei auf dem Computer sucht, die eine alte Version hat und die main.css
noch nicht aktualisiert wurde. Jetzt bekomme ich also v1 im Cache als v2 und ich kann nichts tun, es sei denn, TTL läuft ab (was zu spät ist).
Ich kann den Cache manuell über Anfragen ungültig machen, das ist ok.
Gibt es eine automatisierte Lösung ohne manuelles Eingreifen beim Umschreiben der Software für Feedback an Varnish? Wie etwa:
- Ist es möglich, den Cache ablaufen zu lassen, wenn das Backend hochfährt, nachdem die Prüfung erfolgreich war?
- irgendetwas anderes?
Danke
Antwort1
Wenn Sie diesen Code laden oder ihn an Ihre Varnish-Version anpassen, können Sie Anfragen vom Typ PURGE senden, wobei die Anfrage-URL mit dem zu löschenden Element übereinstimmt, um das Element aus dem Varnish-Cache zu löschen. Sie können dies grundsätzlich verwenden, um das selektive Löschen am Ende des Bereitstellungsprozesses auf Ihren Varnish-Servern über cURL-Befehle oder ähnliches zu automatisieren.
https://github.com/dreamhost/varnish-vcl-collection/blob/master/lib/purge.vcl