NGinx에서 제공하는 이미지를 처리하는 데 시간이 오래 걸리고 캐시에서 부분적으로 처리 된 이미지를 신속하게 처리하고 싶습니다. 여기 Nginx detached subrequest
이 원하는 I의 단계는 다음과 같습니다- 사용자가 이미지에 대한 첫 번째 요청을
- 사용자
- 연결이 해제 될
- 이미지 A를 넣어 어떤 처리없이 이미지 A를 얻을 (A0)
- "분리 된"하위 요청이 시작됨 (S1) [첫 번째 이미지 변환]
- 하위 요청 S1이 완료 될 때까지 이미지 얻을 A0 S1이 완료 subrequest 때 캐시 값은 그 결과 (A1) 지금부터 화상에 대한 모든 요청
- A는 A1 얻을으로 치환
- A "분리"subrequest가 시작된다 (S2) S2 완료 subrequest까지 제 2 화상 변환]
- , 화상 A에 대한 모든 요청은 subrequest S2 완료
- A1 얻을, 캐시는 그 결과 값 (A2) 로 대체된다. . . 등
에 나는 이미지를 처리하기 위해 Nginx에 루아 모듈을 사용하고, 나는
내가 시도 (LRU는,, 등 TTL을 정리) proxy_cache 기능을 사용할 수 있도록하고 싶습니다 proxy_pass, post_action 및 ngx.location.capture를 사용하지만 모두 하위 요청이 끝나기를 기다리며 연결을 닫습니다. Drupal Cache Warmer과 같은 솔루션을 사용하여 말풍선에 OS 호출을 보내지 만, 가능하다면 그렇게하지 않으려합니다.
이 내 테스트 지금까지
server {
listen 8080;
location/{
rewrite_by_lua '
ngx.say(".")
--res = ngx.location.capture("/internal")
ngx.exit(ngx.OK)
';
proxy_pass http://127.0.0.1:8080/internal;
}
location /internal {
content_by_lua '
ngx.log(ngx.ERR, "before")
ngx.sleep(10)
ngx.say("Done")
ngx.log(ngx.ERR, "after")
ngx.exit(ngx.OK)
';
}
}
스택 오버플로에 오신 것을 환영합니다! 'eof()'문서에 대한 링크를 제공했다면 답을 훨씬 더 좋게 만들 수 있습니다. – Matt