Как отобразить исходный кеш страницы при наличии параметра запроса? - PullRequest
0 голосов
/ 16 октября 2018

Я думаю, что я решил первую часть, где он не должен кэшировать страницы с параметрами запроса, используя

if ( bereq.url ~ "/\?.*$" ){
    set beresp.uncacheable = true;
    set beresp.ttl = 120s;
    return (deliver);
  }

Однако, это не показывает кэшированную версию исходной страницы при посещении страницы с запросами.

Любой совет приветствуется.Спасибо.

Что нужно добавить в конфигурацию varnish-vcl, чтобы сделать это возможным?

1 Ответ

0 голосов
/ 20 октября 2018

Извините, я не уверен, что вам нужно.Ваш код на самом деле использует все возможности лака, но вам лучше всего это сделать:

sub vcl_recv {
    if (req.url ~ \?) {
        return (pass);
    }
}

Тонкая разница в вашей версии, Varnish создает объект кеша (толькометаданные, на самом деле) в течение 120 секунд, чтобы запомнить их не должны быть кэшированы.Но, как вы знаете с самого начала, вы не должны кешировать его, вы можете просто return (pass) in vcl_recv.

Теперь, если вам нужно удалить строку запроса, чтобы все запросы фактически возвращали основнойстраницы, вы должны сделать это вместо этого:

sub vcl_recv {
    set req.url = reqsub(req.url, "\?.*", "");
}

это находит первый знак вопроса и все, что находится справа от него, и заменяет его ничем, фактически убивая строку запроса.

...