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

Schreibe einen Kommentar