2016-11-11 5 views
0

Лак. Как я могу игнорировать специальные параметры url для возврата в кеш, но оставить строку запроса?Лак. Как я могу игнорировать специальные параметры url для возврата в кеширование, но оставить строку запроса?

domain.com/?utm1=232&urm2=2323 

Мне нужно оставить этот utm для GA, но игнорировать, чтобы возвратить кэшированную страницу.

ответ

0

Вы можете установить заголовок с соответствующим URL-адресом для кэширования и изменить способ использования хэш-объектов лака.

sub vcl_recv { 
    ... 
    # Remove the params you don't want from the query string and set it to a 
    # temp header (Varnish does not have variables) 
    set req.http.x-cache-url = regsub(req.url,"(utm1=.*&|utm1=.*)", "") 
    ... 
} 

# Below is the default vcl_hash but swapping the req.url for req.http.x-cache-url 
sub vcl_hash { 
    hash_data(req.http.x-cache-url); 
    if (req.http.host) { 
    hash_data(req.http.host); 
    } else { 
    hash_data(server.ip); 
    } 
    return (lookup); 
} 

Делая что вы будете в состоянии поддерживать вашу строку запроса, как это и вы все еще будете в состоянии доставить тот же кэш для различного Params.

Примечание что regsub где вы манипулировать Params. Не стесняйтесь меняться в соответствии с вашими потребностями.

0

Лучшим решением является переписать входящий URL-адрес и не вводить ненужный VCL. Это также будет заботиться о всех связанных с Google переменных Javascript, а не только utm_ones:

if (req.url ~ "(\?|&)(gclid|utm_[a-z]+)=") { 
    set req.url = regsuball(req.url, "(gclid|utm_[a-z]+)=[-_A-z0-9\+\(\)%]+&?", ""); 
    set req.url = regsub(req.url, "(\?|&)$", ""); 
} 

Смотреть больше в моей должности на stripping Google Analytics variables with Varnish.