指令proxy_cache_valid指令问题

在配置缓存的时候,第一次我没有配置proxy_cache_valid,结果发现本地没有生产缓存文件。每次请求都需要从上游服务器获得。

配置了proxy_cache_valid any 30m;以后问题得到解决。

请问,1, 这个proxy_cache_valid指令是用来做什么的?为什么不使用这条指令nginx不生产缓存文件?

            2  , 这条指令后面的时间参数是用来控制什么的? 和proxy_cache_path中的invalid参数有什么不同?

多谢!

邀请回答
提问于 2021-01-07 15:07
198 次浏览
共1个回答

发表评论
  • 陶辉
    2021-01-07 15:47

    proxy_cache_valid用来匹配上游HTTP响应是否使用缓存的2个条件:

    1、HTTP响应码,比如是否缓存404响应;

    2、当上游响应中未携带cache-control、expires头部时,缓存将使用它后面的时间作为过期时间。

    proxy_cache_path定义的淘汰时间,即到达后立刻删除,而过期时间只是资源过期,缓存不会立刻删除。 

    0
    回复
    举报
    • Rockets 2021-01-07 16:21

      多谢陶老师,那么当上游响应中携带了cache-control、expires等头部时,不使用proxy_cache_valid指令NGINX也会保存缓存文件,对吗?

      0
      回复
      举报
    • 陶辉 回复 Rockets 2021-01-07 16:22

      必须设置它,因为它还有response code的功能,但后面的过期时间会被头部的值覆盖。

      0
      回复
      举报
    • Rockets 回复 陶辉 2021-01-07 16:35

      再追问一句,如果我们设置了proxy_cache_valid 200 30s。那么30s的时间可能会被response头部的时间覆盖。同时所有的非200的上游响应NGINX都不会缓存,只有200的响应会被缓存,这样对吗?


      0
      回复
      举报
    • 陶辉 回复 Rockets 2021-01-07 16:44

      1
      回复
      举报
    • Rockets 回复 陶辉 2021-01-07 16:46

      谢谢陶老师

      0
      回复
      举报
提问者

Rockets

暂无个人介绍

  • 0

    文章

  • 1

    粉丝

  • 3

    被赞

Rockets
按Enter键发送
您已邀请位用户
版权所有©F5 Networks,Inc.保留所有权利。京ICP备16013763号-5