Als Python-Ingenieur lernt man, DRY-Stil-Code zu schreiben; nicht weil es ein Modewort ist, aber es macht deinen Code sauberer und besser lesbar für andere.Varnish Variablen und DRY-Code
Wer einmal den Code eines ehemaligen Kollegen gelesen hat, kann das gut verstehen.
Mit Lack gibt es keine variable Zuweisung, also wie kann man sogar versuchen, DRY-Stilregeln zu schreiben?
Beachten Sie Folgendes:
Ich habe eine Gruppe von Backend-Instanzen Apache mit mehr als zehn vhosts
läuft. Es gibt eine Frontend-Instanz, die basierend auf der vhost
neu schreiben muss.
Ich bin fest mit diesem:
if (req.url ~ "^/amp/") {
# vhost's AMP code == xyz
if (req.http.host = "host1.com") {
set req.url = regsub(req.url, "/amp/", "/nps/$host1-brand-code/");
}
if (req.http.host = "host2.com") {
set req.url = regsub(req.url, "/amp/", "/nps/$host2-brand-code/");
}
...
}
Was hier Stauchen ist, ist die Wiederholung von regsub
"/nps/$host1-brand-code/"
Was passiert, wenn die Verlage entscheiden, dass im nächsten Monat /new-nps-url/$host1-brand-code
zu ändern. Ich werde gezwungen sein, viele if-Anweisungen für nur einen Cluster zu aktualisieren, und wir haben viele Cluster!
Haben Sie nachging [Lack-Module] (https://github.com/varnish/varnish-modules)? Es scheint, dass sie 'vmod-var' haben, was Ihnen erlaubt, eine Variable wie gewünscht einzustellen. Sie haben einige [Tests] (https://github.com/varnish/varnish-modules/tree/master/src/tests/var) zur Verwendung und [test02.vtc] (https://github.com/varnish /varnish-modules/blob/master/src/tests/var/test02.vtc) kann für Sie von besonderem Interesse sein. –
@CoryShay das ist eine gute Lösung, vielen Dank für den Link! Ich muss mich jedoch vorsichtig annähern, da Lack auf diesen Clustern über einen Koch installiert/aktualisiert wird und eine neue "So" -Notwendigkeitspflege eingeführt wird. –