바니시를 처음 사용하십시오. . 니스를 사용하여, 몇 시간 전에 개발, 나는 약간의 PHP 코드를 개선하기 위해 노력하고있어쿠키로 바니시 캐싱
:-(예상보다 더 열심히 점점 이 코드는 두 쿠키를 사용합니다 : PHPSESSID 및 언어
모든 페이지 설정 .이 정의되어 있지 않은 경우 PHPSESSID 쿠키 그러나 익명 세션이 쿠키는 단지 한 페이지에 사용되는
의 내가 페이지 1, 페이지 2, 페이지 3 및 Page4 있다고 가정 해 봅시다 다음과 같이 내 구성이 같아야합니다..
페이지 1, 페이지 2를 Page3는 LANGUAGE 쿠키가 필요하며 해당 쿠키와 함께 캐시되어야합니다. 하나의 캐시 fo 각 언어와 페이지.
페이지 4에는 PHPSESSID 및 LANGUAGE 쿠키가 필요하며 각 사용자별로 고유하게 캐시되어서는 안됩니다.
내 default.vlc가 제대로 작동하지 않으므로 방향이 잘못 표시 될 수 있습니다. 어쩌면 내가 놓친 몇 가지 개념을.
sub vcl_init {
# When requests come to Varnish I need to remove PHPSESSID so it's not used for the hash in caching. Page4 doesn't need caching as it's specific for each user:
if (req.http.host ~ "Page4") {
return(pass);
}
# remove PHPSESSID so pages1, 2, and 3 get cached just once for everyuser but in all languages.
if ((req.url !~ "page4")) {
set req.http.Cookie = regsuball(req.http.Cookie, "PHPSESSID=[^;]+(;)?", "");
}
return (hash);
}
나는 vcl_hash에 내가 포함되어 있으므로 언어의 쿠키와 웹 페이지를 캐시해야합니다
sub vcl_hash {
hash_data(req.url);
if (req.http.host) {
hash_data(req.http.host);
} else {
hash_data(server.ip);
}
# hash cookies for requests that have them
if (req.http.Cookie) {
hash_data(req.http.Cookie);
}
}
가 어떻게 그냥 PHPSESSIONID을 제거 할 수 있습니까?
sub vcl_backend_response {
# Called after the response headers has been successfully retrieved from the backend.
if (!(bereq.url ~ "Page4")) {
unset beresp.http.set-cookie;
}
return (deliver);
}