Как отправить запрос очистки в лак
Я не вижу подобный вопрос, но извиняюсь, если я обманываю.
Мы используем кеш-лак в нашей системе, но хотим установить систему, в которой мы можем очистить отдельные страницы при их редактировании (довольно нормально). Мы пытались заставить его работать с использованием HTTP-заголовка. Итак, наш VCL настроен так:
acl purge {
"localhost";
#### Our server IP #####
}
sub vcl_recv {
if (req.request == "PURGE") {
if (!client.ip ~ purge) {
error 405 "Not allowed.";
}
return (lookup);
}
}
sub vcl_hit {
if (req.request == "PURGE") {
purge;
}
}
sub vcl_miss {
if (req.request == "PURGE") {
purge;
}
}
Однако я зациклен на том, как на самом деле ОТПРАВИТЬ запрос на удаление http. Мы используем PHP для веб-сайта, поэтому я попытался использовать:
header("PL: PURGE / HTTP/1.0");
header("Host: url to purge");
Но это, кажется, ничего не делает (и varnishlog, похоже, не показывает ничего очищения).
Я также экспериментировал с cURL, но, опять же, он, похоже, не работает. Я пропустил что-то действительно основное, или это базовый звук, означающий, что моя реализация прослушивается?
Большое спасибо,
Ответы
Ответ 1
Вам нужно сделать HTTP-запрос.
Неподтвержденный, но должен быть по строкам (если вы хотите использовать завиток, как вы упомянули):
$curl = curl_init("http://your.varnish.cache/url-to-purge");
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PURGE");
curl_exec($curl);
Ответ 2
Вы также можете очистить с помощью командной строки. Используйте команду sudo varnishadm
. Это откроет интерфейс командной строки Varnish. где вы можете ввести свою команду, чтобы очистить страницы в соответствии с вашими потребностями. Например, чтобы очистить домашнюю страницу, сделайте следующее:
[email protected]:/etc/varnish# sudo varnishadm
200
-----------------------------
Varnish Cache CLI 1.0
-----------------------------
Linux,3.5.0-28-generic,x86_64,-sfile,-smalloc,-hcritbit
Type 'help' for command list.
Type 'quit' to close CLI session.
varnish> ban.url ^/$
200
Ответ 3
Быстрый, грязный и эффективный способ отправки запроса PURGE:
curl -v -k -X PURGE URL
Вы можете сделать немного script с этим утверждением следующим образом:
1) Откройте редактор, в примере VI
vi varnish_purge_url.sh
2) Введите следующий текст:
#!/bin/sh
curl -v -k -X PURGE $1
(не забудьте оставить пустую строку между первой и последней строками).
3) Сохраните файл и выйдите из него. Затем установите соответствующие атрибуты для его выполнения из оболочки:
chmod 750 varnish_purge_url.sh
4) Вы хотите быть root при создании и использовании вышеуказанного script. Если вы используете Ubuntu, не стесняйтесь добавлять sudo
перед командами, когда это требуется.
5) Использование прост:
./varnish_purge_url.sh URL
Где URL
- URL для очистки.
Ответ 4
Возможно, я на новой версии, но что выше не работает для меня. Это произошло:
sub vcl_hit {
if (req.request == "PURGE") {
ban("req.url ~ "+req.url);
error 200 "Purged.";
}
}