Varnish vor mehreren Servern mit Versionierung

Varnish vor mehreren Servern mit Versionierung

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=1und /main.css?=v2werden 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.cssaktualisiert ameinsBackend und ich sende eine Anfrage entsprechend der neuen Webseitenversion an Varnish und die Anfrage. /main.css?=v2Es kann sein, dass es immer noch nach einer Datei auf dem Computer sucht, die eine alte Version hat und die main.cssnoch 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:

  1. Ist es möglich, den Cache ablaufen zu lassen, wenn das Backend hochfährt, nachdem die Prüfung erfolgreich war?
  2. 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

verwandte Informationen