Usunięcie wybranych par atrybutów / wartości kwerendy nie spowoduje zmiany pamięci podręcznej przez nich

Moim celem jest „dodanie białej listy” pewnych atrybutów kwerendy i ich wartości, aby lakier nie zmieniał pamięci podręcznej między adresami URL.

Przykład:

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

W powyższym przykładzie chcę dodać „utm_code” do białej listy, ale nie „type”. Po pierwszym trafieniu chcę, aby lakier przekazywał buforowaną zawartość do drugiego adresu URL.

Jednak w przypadku trzeciego adresu URL wartość atrybutu „typ” jest inna, więc powinien być brakiem pamięci podręcznej lakieru.

Wypróbowałem dwie poniższe metody (znalezione w artykule pomocy drupala, którego nie mogę teraz zlokalizować), które wydawały się nie działać. Może dlatego, że mam błędne wyrażenie regularne.

# 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, "[\?|&]+$", "");

questionAnswers(7)

yourAnswerToTheQuestion