nginx反向代理和nginx web服务器的缓存有什么区别?

发布于 2022-09-02 00:18:06 字数 192 浏览 9 评论 0

在代理和web服务器上面做了缓存设置,有什么区别?

浏览器的缓存是浏览器自己设置存储的,还是服务器要求浏览器存储的?

我认为在代理上面做缓存是为了拿一些数据不用去后面的服务器,直接在代理上面拿。减轻后面服务器的压
力,但是我想不通在服务器上面做缓存是为什么了?还是说这个缓存设置是为了让浏览器缓存?
求一些nginx理论文档。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

微暖i 2022-09-09 00:18:06

nginx反代在网站上使用,一般是为了做负载。就缓存上来讲,在代理单位的存储上保存请求目标的内容,加快响应速度,减少应用单位上的资源开销,比如多客户端请求相同的资源,代理缓存命中后,对于应用服务器来说,只发生了一次资源调度。

而web服务器上的缓存配置,一般来说是用来减少本地IO的,请求目标的内容会存放在客户端本地。

比如web设置了内容过期的timespan(max-age=31536000或者Expires:<UTCDateString>,这样的header,注意Expires头是http1.0的东西,如果客户端支持1.1只用写Cache-Control: max-age就可以了,这些可以翻阅RFC文档再配合各浏览器厂商来决定),那下一次请求如果没有内容没过期,浏览器是不会发起任何请求的,直接读取本地的缓存数据;

而内容过期后,浏览器会发起请求,如果web端给设置过LastModified或者是Etag,请求的时候就会带上这些特征,用于web服务器对资源进行比对,如果内容没有发生变化,那么就会告诉你304状态,浏览器还是读取缓存数据。

熊抱啵儿 2022-09-09 00:18:06

1.浏览器的缓存是自己设置的,服务器只能在http返回头上给浏览器一些“提示”,比如说,设置内容的过期时间,设置Etag,或者设置no-cache,至于缓不缓存,还是看浏览器自己的实现;
2.nginx设置的缓存,应该都是把静态的内容(或者伪静态的,首页之类的)以特定文件名,存到特定区域,可以设定过期时间,如果hit了缓存,要么给客户端返回304(不是第一次请求),要么直接不请求后面的web服务器,把内容传给客户端;
3.web服务器的缓存,个人理解,更多的是指数据库查询之类的缓存吧,或者是模板的编译缓存

祁梦 2022-09-09 00:18:06

代理不保存数据,可以代理一个缓存服务器,如memcache
缓存是保存数据,下次请求会读取缓存。
就nginxweb缓存来说,有几个意思,一个可能类似memcache缓存,对nginx来说就是一个代理。也有可能指nginx使用缓存模块,缓存在nginx所在服务器硬盘中。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文