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

Очистить кеш Varnish для одного URL с помощью varnishadm

Varnish используется на веб-сайте Wordpress.

Я хочу удалить Varnish для одного URL, а не для всего домена.

С помощью этой команды я могу перезапустить Varnish для всего домена:

varnishadm -T :6082 -S /etc/varnish/secret 'ban req.http.host ~ \"http://www.foo.com\" && req.url ~ \"^/\"'

Однако я хотел бы удалить лак только для одного URL.

Пример: www.foo.com/url_to_be_purged

Я пробовал предыдущую команду, заменив ее единственным URL:

varnishadm -T :6082 -S /etc/varnish/secret 'ban req.http.host ~ \"http://www.foo.com/url_to_be_purged\" && req.url ~ \"^/\"'

Но это не сработало, URL-адрес все еще был HIT в лаке.

Есть идеи, как я могу этого добиться?

ОБНОВИТЬ

Как было предложено в ответе ghloogh, я пробовал следующую команду:

varnishadm -T :6082 -S /etc/varnish/secret ban "req.http.host == http://www.foo.com && req.url == http://www.foo.com/url_to_be_purged"

Я также пробовал этот вариант:

varnishadm -T :6082 -S /etc/varnish/secret ban "req.http.host == http://www.foo.com && req.url == /url_to_be_purged"

Но я все еще получаю HIT в URL и данные не обновляются

Вам не нужно указывать схему для имени хоста, и вы можете использовать строгое соответствие вместо регулярного выражения:

varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret ban "req.http.host == example.com && req.url == /some/url/"

Вы можете попробовать следующее:

sudo varnishadm -S /etc/varnish/secret  -T 127.0.0.1:6082 "ban req.url ~ \"http://example.com/testimage.png$\""

работал у меня.