请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

proxy_cache_valid缓存的相关问题请教

  location / {
       proxy_cache my_cache;
       proxy_cache_revalidate on;
       proxy_cache_min_uses 3;
       proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
       proxy_cache_lock on;
       proxy_pass http://my_upstream;
   }

如果是动态文件,不加“proxy_cache_valid 200 304 1h;”内容。哪么页面不缓存,如果加了这个内容,如果动态文件更新了。用户看到还是旧信息,如何即时更新。又可以在服务器宕机的时候时候让用户看到缓存页面。

       proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;

这句话的意思是,如果后端服务器返回错误或者5xx等错误,给用户返回之前的cache数据吧。动态页面如何做呢


正在回答 回答被采纳积分+3

1回答

Jeson 2018-05-31 21:40:58

 是的,如果proxy_cache_use_stale设置了,那么当NGINX收到源站返回error、timeout或者其他指定的5XX错误,并且在其缓存中有请求文件的陈旧版本,则会将这些陈旧版本的文件而不是错误信息发送给客户端。

如果要将动态请求设置为不缓存,只缓存静态元素,可以作动静分离,将静态请求,单独设置缓存。如下:

    location ~ .*\.(htm|html|js|css|gif|jpg|jpeg|png|bmp|ico|swf|flv)$ {

        proxy_next_upstream http_500 http_502 http_503 http_504 error timeout invalid_header;

        proxy_cache cache_one;

        proxy_cache_valid 200 304 12h;

        proxy_cache_valid 301 302 10h;

        proxy_cache_valid any 1m;

        proxy_cache_key $host$uri$is_args$args;

        add_header Ten-webcache '$upstream_cache_status from $host';

        proxy_pass http://tomcat-game;

        expires 30m;

    }

  location / {
       proxy_pass http://my_upstream;
   }


0 回复 有任何疑惑可以回复我~
  • 提问者 imoocadf36567 #1
    proxy_next_upstream http_500 http_502 http_503 http_504 error timeout invalid_header;
    应该只适合应用于静态页面吧,如果是动态页面【请求后端tomcat】,如果动态页面做了缓存,很明显就没意义了。比如缓存10分钟。哪么用户看到的还是10分钟的页面。而如果动态页面用这个参数好像没什么意义。。
    回复 有任何疑惑可以回复我~ 2018-06-01 09:46:50
  • Jeson 回复 提问者 imoocadf36567 #2
    这个设置不会关心你静态页还是动态页,只关系后台服务返回的状态码。
    另外,动态页面缓存也不是没有意义,有的场合,通过设置适当的动态页面缓存时间,可以很好的缓解后台服务器压力。
    回复 有任何疑惑可以回复我~ 2018-06-01 10:06:35
  • Jeson #3
    这个设置不会关心你静态页还是动态页,只关心后台服务返回的状态码。 另外,动态页面缓存也不是没有意义,有的场合,通过设置适当的动态页面缓存时间,可以很好的缓解后台服务器压力。
    回复 有任何疑惑可以回复我~ 2018-06-01 10:06:58

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信