Я пытаюсь извлечь данные из моего (PHP) бэкэнд с помощью ESI в Varnish 4.x. Я хочу сохранить (кеш) результат в моем экземпляре Varnish. Результат уникален для каждого IP-адреса (client.ip), поэтому хэш для кэшированного результата должен быть построен с включенным client.ip. Лак не кэшируется, как ожидалось. Я не могу кэшировать на основе IP. Чтобы дать вам представление о том, что я пробовал, см. Ниже.Как кэшировать фрагмент ESI и соответствующий вывод с помощью Varnish 4.x по IP
unique.js:
var rand = '<esi:include src="/unique.php"/>';
unique.php:
<?php echo rand(); ?>
default.vcl (экстракт):
sub vcl_recv {
if (req.url ~ "^/unique.(js|php)") {
set req.http.marker = client.ip;
}
}
sub vcl_hash {
if (req.http.marker) {
hash_data(req.http.marker);
}
}
sub vcl_backend_response {
if (bereq.url == "/unique.js") {
set beresp.do_esi = true;
set beresp.ttl = 24h;
} elseif (bereq.url == "/unique.php") {
set beresp.ttl = 30d;
}
}
Очевидно я что-то отсутствует. Любые намеки приветствуются!