Назад | Перейти на главную страницу

Как добавить GET-параметр, при котором Varnish обслуживает кешированную страницу

Я хочу добавить параметр к некоторому URL-адресу, который позволяет мне отключать кеширование страницы. Так что-то вроде https://example.org/foo/baa?uncached должен быть сервером серверов приложений, где как https://example.org/foo/baa может обслуживаться прямо из кеша лака.

Для этого я попытался добавить

if (req.url ~ "^/\?uncached") {
    set req.http.X-VC-Cacheable = "NO:On user request";
    return(pass);
}

в мой vcl_recv. Но как-то это не сработало (поведение кеширования не переключается). Это правильный подход? Что я сделал не так?

Думаю, должно быть:

if (req.url ~ "\?uncached") {
    set req.http.X-VC-Cacheable = "NO:On user request";
    return(pass);
}

В моем случае проблема заключалась в неправильном RegEx:

if (req.url ~ "^/\?uncached") {

Работает только для URL без какой-либо локальной части. В то время как:

if (req.url ~ "\?uncached") {
    set req.http.X-VC-Cacheable = "NO:On user request";
    return(pass);
}

workds для каждого URL, где uncached является первым параметром.