关于nginx+node.js缓存的问题

最近,遇到一个小坑关于nginx转发node.js的问题
由于在node里面做了判断,判断来源报文头分别对应不同的h5。当第一次访问后,后面访问不做判断,直接拿了第一次的缓存。直到进入服务器清缓存后,会复现。
关于优先级从高到低:
1、inactive:在proxy_cache_path配置项中进行配置,说明某个缓存在inactive指定的时间内如果不访问,将会从缓存中删除。
2、源服务器node.js页面中生成的响应头中的Expires,生成语句为:
header(“Expires: Fri, 07 Sep 2013 08:05:18 GMT”);#一般使用较少,后续分析忽略。
3、源服务器php页面生成的max-age,生成语句为:
header(“Cache-Control: max-age=60”);
4、nginx的配置项 proxy_cache_valid:配置nginx cache中的缓存文件的缓存时间,如果配置项为:proxy_cache_valid 200 304 2m;说明对于状态为200和304的缓存文件的缓存时间是2分钟,两分钟之后再访问该缓存文件时,文件会过期,从而去源服务器重新取数据。
参考https://www.cnblogs.com/zlingh/p/5879988.html的测试发现,当inactive较大时,会优先判断max-age。关于nginx+node.js缓存的问题
将浏览器想成nginx,判断time>max-age,结果为否的时候,会去nginx的inactive拿缓存。导致只有第一次会正常判断。把max-age设置为0,让nginx每次都去服务器进行判断,而不直接读取缓存。