基于Proxy Store的缓存机制
404错误驱动Web缓存
当Nginx服务器在处理客户端请求时,发现请求的资源数据不存在,会产生404错误,然后服务器通过捕获该错误,进一步转向后端服务器请求数据,最后将后端服务器的响应数据传回给客户端,同时在本地进行缓存。从实现原理上来看,Nginx服务器向后端服务器发起数据请求并完成Web缓存,主要是由产生的404错误驱动的。
配置将404错误响应进行重定向,然后使用location块捕获重定向请求,向后端服务器发起请求获取响应数据,然后将数据转发给客户端的同时缓存到本地。
资源不存在驱动Web缓存
通过location块的location if条件判断直接驱动Nginx服务器与后端服务器的通信和Web缓存。
在配置实例中使用location if条件判断支持的“!-f”判断请求的资源在Nginx服务器上是否存在,如果不存在就通过后端服务器获取数据,然后回传给客户端,同时使用Proxy Store进行缓存。
以上两种缓存机制在原理上是相近的,在实际的应用中,我们通常可以将Proxy Store的缓存目录配置到/dev/shm中提高缓存数据的处理速度。如果不是在内存中保存缓存数据,这两种缓存机制不支持缓存数据的清理机制,缓存文件会一直保存在本地占用硬盘空间。
两种缓存机制也不支持动态链接请求。比如getsource?id=1和getsource?id=2这两个请求,这两种缓存机制会忽略id=1参数,从而造成返回的资源不正确等问题。
Last updated
Was this helpful?