바니시를 사용하여 특정 사용자 텍스트와 링크가있는 페이지를 캐시하려고합니다. 이러한 페이지를 캐시하는 가장 좋은 방법은 Edge Side Includes입니다.Varnish에서 사용자 별 컨텍스트를 포함하도록 ESI URL을 조작하는 방법은 무엇입니까?
상황
내 웹 응용 프로그램은 편안하고 있으며 그 문제에 대한 세션 또는 쿠키를 지원하지 않습니다. 모든 소스 URL은 고유 한 사용자를 식별 할 수있는 사용자 별 쿼리 매개 변수를 포함한다는 의미에서 완전합니다. 웹 응용 프로그램에서 가장 많이 방문한 페이지는 목록 페이지입니다. 헤더에 사용자의 이메일을 표시하면되며 페이지의 링크는 로그인 된 동작을 시뮬레이션하기 위해 미리 사용자 별 검색어 매개 변수를 가져와야합니다. 페이지 내용은 헤더 및 내부 링크를 제외하고 각 사용자마다 동일해야합니다.
페이지의 해당 영역에 <esi:include />
을 사용하려했지만 분명히 페이지 소스에 사용자 특정 매개 변수를 포함 할 수 없었습니다. 그렇지 않으면 첫 번째 사용자 특정 적중이 첫 번째 사용자의 매개 변수로 캐시되고 모든 후속 사용자). 더구나 나는 바니시의 vcl_recv
서브 루틴에서 사용자 특정 매개 변수를 제거하고 lookup
직전에 req.http.X-User
과 같은 헤더에 일시적으로 저장하려고했습니다. 각 원본 URL은 사용자 지정 매개 변수가 없으므로 각 고유 사용자에 대해 중복 캐시 개체를 만들지 않는 req.url
으로 해시됩니다.
질문
내가 쿼리 매개 변수로 각 ESI URL에 대해이 사용자 특정 값을 추가하여req.http.X-User
및 해시 사용자 특정 ESI 요청에서 사용자 특정 매개 변수를 읽고 싶습니다
. 소스 요청과 포함 된 ESI 요청간에 쿼리 매개 변수를 공유 할 수있는 방법이 없습니다. 누군가 도움을 줄 수 있습니까?
I는 아래 그림에 내 목표를 묘사하는 것을 시도했다 :
이 문제에 대한 해결책을 찾을 수 있었습니까? – tmueller