내가 「자원 "이 가정 일에 자원을 보장하기 위해 캐시를 제거 - http://localhost/doc
, 내가 자주 방문 이후 누군가가 그것을 통해 업데이트 제외하고, 니스 에 의해 모든 시간을 캐시 할 것으로 예상 POST, POST 업데이트가 끝난 후 모든 추가 요청은 "doc"의 최신 버전을 검색해야합니다.니스 : 조건부
- Exec에서 명령 :
varnishadm -T 127.0.0.1:6082 purge req.url == "/doc"
- 화재
내 생각은 POST 요청이 기본적으로 캐싱없이 니스를 통과하기 때문에, 내 백엔드 서버 내에서이 논리를 포장하고, 내가 할 수있는 내 백엔드 서버에 는 HTTP 퍼지 요청 : 그러나
curl -X PURGE http://localhost/doc
는, 내가 "Cache-Control
"헤더를 존중 VCL을 config (설정) 필요! 내 VCL은 다음과 같다 있지만 작동하지 :
sub vcl_fetch {
if (beresp.http.Cache-Control ~ "no-cache") {
purge;
}
return (deliver);
}
acl purgers { "127.0.0.1"; }
sub vcl_recv {
if (req.request == "PURGE") {
if (!client.ip ~ purgers) {
error 405 "Method not allowed";
}
return (lookup);
}
}
sub vcl_hit {
if (req.request == "PURGE") {
#purge;
purge("req.url ~ " req.url);
error 200 "Purged";
}
}
sub vcl_miss {
if (req.request == "PURGE") {
purge;
error 200 "Purged";
}
}
sub vcl_pass {
if (req.request == "PURGE") {
error 502 "PURGE on a passed object";
}
}
이 불만 :
Message from VCC-compiler:
Expected ';' got '('
(program line 174), at
('input' Line 154 Pos 14)
purge("req.url ~ " req.url);
-------------#-----------------------
Running VCC-compiler failed, exit 1
VCL compilation failed
- Question1 : 어떻게 내 목표를 달성하기 위해 VCL를 업데이트?
- Question2 :이 매우 일반적인 시나리오라고 생각 : 캐시 자원 동안이 최신이 을 유지하고 니스를 사용하여이를 달성하기위한 가장 좋은 방법은 무엇입니까?
감사합니다.
바니시 3에서 purge()가 ban()로 바뀌고 제거되었습니다. 도입되었습니다. – Ketola
감사합니다. Ketola, 오늘 실제로 찾았습니다. https://www.varnish-cache.org/docs/3.0/ https://www.varnish-software.com/static/book/Cache_invalidation.html installation/upgrade.html? highlight = purge 그러나 질문 2가 답을 기다리는 중입니다 :) –