避免 Nginx 缓存 0 字节文件的方法

像我一样,肯定很多人对一些行为不端的应用发送的空的输出感到不爽,更不爽的是如果前端启用了缓存,那么空的输出也会被缓存起来,直到缓存实现或者被清除。

为了避免上述情形,我们可以通过一些简单的配置来避免。通过使用 Content-Length 响应头信息来判断并禁止缓存。

最基本的概念便是:只缓存大小大于0的内容,配置如下:

map $upstream_http_content_length $flag_cache_empty {
	default         0;
	0               1;
}

server {
....
	location / {
		...
		proxy_no_cache $flag_cache_empty;
		proxy_cache_bypass $flag_cache_empty;
		...
	}
}
如果 Content-Length 值为 0 时 map 将设置 flag_cache_empty 变量值为 1,当这个值为 1 时不启用缓存。

原文地址 http://www.oschina.net/question/12_109409

你可能感兴趣的:(nginx,缓存,Content-Length,proxy_no_cache)