Nginx缓存问题

Nginx在后续版本中加入了proxy_cache实现对后端服务器请求的缓存,并赋予了很多强大的配置,在官方文档及各类技术支持文档中都能找到,本文不再赘述环境搭配及相关问题。主要讨论配置成功后为何Nginx服务器没有生成缓存文件,及无法命中缓存的问题。

1.静态文件JS,CSS等都能生成缓存文件,但是普通请求和HTML无法缓存。

产生这个问题的原因简单点来说是因为后端服务器的Expires和Cache-Control导致的。解决办法有粗暴与深入了解其原理两种。

第一种:强制缓存,在Nginx配置中的HTTP体里加上

proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie;

此法可以不用修改后台服务端配置,对希望快速配置生效的同学有效。

第二种:修改后端服务器响应头相关配置

具体参考博文https://www.cnblogs.com/zlingh/p/5879988.html

此文描述其机器相当清楚,强烈各位研究。

2.非get、head请求不能缓存

在配置的location块中添加缓存的HTTP方法,示例如下:

proxy_cache_methods GET HEAD POST; 

 3.加了上面的post请求配置,仍然缓存无效

由于大部分使用post请求的都会用到requestBody。而Nginx缓存是以key、value保存的,默认的key是URI,所以需要修改Nginx的缓存key来达到缓存目的。添加下述示例:

proxy_cache_key "$request_uri|$request_body"; 

注意:如果请求头(oauth协议)也会影响请求的,也需要修改key的规则,具体参考官方文档。

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值