Stripping-out-select-querystring-Attribut/Wert-Paare, damit der Lack wird nicht variieren, Sie den cache, indem Sie
Mein Ziel ist eine "whitelist" bestimmten querystring-Parametern und Ihre Werte, damit der Lack wird nicht variieren, cache zwischen den urls.
Beispiel:
Url 1: http://foo.com/someproduct.html?utm_code=google&type=hello
Url 2: http://foo.com/someproduct.html?utm_code=yahoo&type=hello
Url 3: http://foo.com/someproduct.html?utm_code=yahoo&type=goodbye
Im obigen Beispiel ich will auf die whitelist "utm_code", aber nicht "geben", Also nach der ersten url ist der hit ich möchte Lack zu dienen, dass der Cache-Inhalt auf die zweite url.
Doch im Fall des Dritten-url das Attribut "type" mit dem Wert Verschieden ist, so dass sollte ein Lack-cache-miss.
Habe ich versucht die 2 Methoden die unten (zu finden auf der drupal-Hilfe-Artikel kann ich nicht finden jetzt) nicht zu funktionieren scheint. Vielleicht, weil ich die regex falsch ist.
# 1. strip out certain querystring values so varnish does not vary cache.
set req.url = regsuball(req.url, "([\?|&])utm_(campaign|content|medium|source|term)=[^&\s]*&?", "\1");
# get rid of trailing & or ?
set req.url = regsuball(req.url, "[\?|&]+$", "");
# 2. strip out certain querystring values so varnish does not vary cache.
set req.url = regsuball(req.url, "([\?|&])utm_campaign=[^&\s]*&?", "\1");
set req.url = regsuball(req.url, "([\?|&])foo_bar=[^&\s]*&?", "\1");
set req.url = regsuball(req.url, "([\?|&])bar_baz=[^&\s]*&?", "\1");
# get rid of trailing & or ?
set req.url = regsuball(req.url, "[\?|&]+$", "");
InformationsquelleAutor runamok | 2012-10-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe, dachte ich es heraus und wollte zu teilen. Ich fand, dass dieser code stellt ein Unterprogramm, das tut, was ich brauche.
InformationsquelleAutor runamok
Gibt es etwas falsch mit der RegEx.
Ich habe die RegExes in beiden regsub-Aufrufe:
Die erste änderung ist der Teil "[%._A-z0-9-]", weil die dash funktionierte wie ein Bereich symbol, deshalb habe ich es verschoben zu Ende, und der Punkt sollte maskiert werden.
Die zweite änderung ist das nicht nur entfernen Sie ein Fragezeichen in der verbleibenden URL, sondern auch ein kaufmännisches und-Zeichen oder Fragezeichen und das kaufmännische und-Zeichen.
InformationsquelleAutor kipusoep
Vom https://github.com/mattiasgeniar/varnish-4.0-configuration-templates:
InformationsquelleAutor Pere
Ich verbessert runamok Antwort ein bisschen durch hinzufügen von Unterstützung für leere Parameter und Sortierung die restlichen, hier ist eine komplette vtc-Datei, die ich implementiert, um zu überprüfen Richtigkeit.
InformationsquelleAutor Jedihe
Du willst, Streifen aus
utm_code
aber es ist nicht abgedeckt, die von den regexps, die Sie verwenden.Versuchen Sie dies:
Oder wenn Sie wollen, um Streifen alle URL-Parameter, die beginnen mit
utm_
Sie können gehen mit:Eigentlich ist Sie fast hatte. Aber es schlägt fehl, wenn Sie trailling utm_ seit den gierigen & auf das Ende entspricht, bewirkt, dass die nächste nicht übereinstimmen. müssen: ([\?|&])utm_(\w+)=[^&\s]*
InformationsquelleAutor Ketola
Eine Kopie von runamok, aber ich habe + statt %20 in meinem params, so habe ich Hinzugefügt, um meine regex
InformationsquelleAutor Evaldnet
Haben Euch gegeben, dies zu versuchen?
https://github.com/Dridi/libvmod-querystring
Beispiel
set req.url = querystring.regfilter(req.url, "utm_.*");
InformationsquelleAutor user2965205