回答
收藏
分享
举报
nginx 缓存 no-cache问题
提问于2021-01-04 21:04

浏览 1.6k

proxy_cache_path创建了一个缓存,然后在客户端通过curl -H "Cache-Control: no-cache" http://10.234.70.103:2048/index.html来模拟请求。

结果发现nginx每次还是使用缓存数据发给客户端。我的理解是在http请求头部加入Cache-Control: no-cache是要告诉代理服务器不要用缓存数据,为什么nginx还是会使用缓存数据来响应客户端呢?

已修改于2023-03-10 22:54



写下您的回答
发表回答
全部回答(1)

按点赞数排序

按时间排序

no-cache在请求头部时,是告诉代理服务器,不能直接使用已有缓存作为响应返回,除非带着缓存条件到上游服务端得到 304 验证返回码才可使用现有缓存。cache-control在请求头部中的意义有点反直觉,你可以看下我的这一节视频课:https://time.geekbang.org/course/detail/175-99534

赞同

0

回复举报

回答于2021-01-05 08:34



回复陶辉
回复
Rockets回复了

多谢陶老师。 我又在nginx服务器上抓包看了一下。 Nginx还是直接把本地的缓存发给了客户端,并没有先去上游服务器确认再发送。是我哪个地方配置不对吗?


多谢!

0

回复举报

回答于2021-01-05 01:19



回复Rockets
回复
陶辉回复了Rockets

我刚看了下1.19.6的源代码,Nginx目前无视HTTP请求中的Cache-Control头部,只会处理上游发来的响应cache-control头部。所以,如果你想实现RFC规范中的语义,要用_bypass指令通过变量来实现是否使用缓存了。

0

回复举报

回答于2021-01-05 02:45



回复陶辉
回复
Rockets回复了陶辉

感谢陶老师

0

回复举报

回答于2021-01-05 05:11



回复Rockets
回复
提问者
Rockets
这家伙很懒还未留下介绍~
0
文章
10
问答
1
粉丝
相关问答

反向代理用来隐藏服务器细节,作为负载均衡就能组建分布式集群,提供容灾、高可伸缩性等;

正向代理用来隐藏客户端细节,比如翻墙、跳转机访问、隐藏IP地址等。

点赞 0
浏览 904

还有如下情况可以使用变量:

1, rewrite模块的rewrite指令。

2. echo 模块的echo 指令。

3。 可以自定义一些指令使用变量。

点赞 0
浏览 860

参考这篇文章:https://juejin.cn/post/6844903774901764104

我也遇到了这个问题,卡了很久

点赞 0
浏览 1k