Hello!
2014-08-12 4:13 GMT-07:00 Lucien Li:
> 请教下,如果我请求的URL miss缓存过期了,但是缓存文件在磁盘上,没有删除。
> 如果请求的文件内容没有变,此时我只想更新内存文件元信息,不想写缓存文件,这样来减少磁盘IO。
> 如果请求的文件内容有变动,在来写缓存文件。
>
> 是不是得根据请求的URI和vary response header的内容产生一个hash值,来根据这个hash值判断文件内容是否有变动。
> 不知道章老师有啥好的方法。
这个在技术上不太好实现,因为对于较大的响应体,nginx 在从 socket
接收响应体数据流的*同时*就(按块)写文件系统了。否则的话,nginx 需要在内存里缓存整个响应体,显然开销会不可控。
或许更简单的处理办法是让你的后端生成恰当的 E-Tag 响应头,然后把 E-Tag 加入到你的 proxy_cache_key 里面去。
Regards,
-agentzh