5
我需要对NGinx提供的图像进行一些耗时的处理,我希望能够快速响应来自缓存的部分处理图像。Nginx独立子请求
下面是我的步骤想:
- 用户使图像第一请求
- 用户获得的图像A不
- 连接被释放
- 像一个放在任何处理高速缓存(A0)
- A “分离” 子请求开始时(S1)[第一图像变换]
- 直到子请求S1完成后,对于所有请求像一大家A0
- 当子请求S1完成后,高速缓存值将替换其结果(A1)
- 从现在起对图像的所有请求得到A1
- A“超然”的子请求启动(S2)第二图像变换]
- 直到子请求S2完成后,对图像A的所有请求得到A1
- 当子请求S2完成后,高速缓存值被替换为它的结果(A2) 。 。 。 等
我使用nginx的Lua的模块来处理图像,我希望能够使用proxy_cache功能(LRU清理,TTL等)
我曾尝试使用proxy_pass,post_action和ngx.location.capture,但所有这些都等待子请求完成以关闭连接。我见过一些解决方案,如Drupal Cache Warmer发出操作系统调用卷曲,但如果可能我不想这样做。
这是我的测试案例,到目前为止
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)
';
}
}
欢迎来到Stack Overflow!如果你真的提供了一个到'eof()'文档的链接,你的答案可以变得更好。 – Matt 2013-03-11 10:04:17