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