Моя цель - "белый список" определенных атрибутов querystring и их значений, поэтому лак не будет изменять кеш между URL-адресами.
Пример:
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
В приведенном выше примере я хочу, чтобы белый список "utm_code", но не "type". После того, как первый URL-адрес попал, я хочу, чтобы лак обслуживал этот кешированный контент ко второму URL-адресу.
Однако, в случае третьего URL-адреса, значение атрибута "type" отличается, так что это должно быть пропуском кэша лака.
Я попробовал два метода ниже (найдено в статье справки drupal, которую я не могу найти сейчас), которая, похоже, не работает. Возможно, потому, что у меня неправильное выражение.
# 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, "[\?|&]+$", "");