专栏名称: 马哥Linux运维
马哥linux致力于linux运维培训,连续多年排名第一,订阅者可免费获得学习机会和相关Linux独家实战资料!
目录
相关文章推荐
InfoQ架构头条  ·  “天价”ERP ... ·  昨天  
51好读  ›  专栏  ›  马哥Linux运维

三分钟看懂Nginx服务器的缓存原理和机制

马哥Linux运维  · 公众号  · 运维  · 2017-04-28 08:23

正文

作者:LifeIsButA_Span

来源:

http://blog.csdn.net/lifeisbuta_span/article/details/70598586


Nginx服务器的缓存原理,是在学习过程中比较重要的一个知识点,学习通透之后,对于自己的能力会有不小的提升——而且提升不只限于nginx一方面,技术理论一通百通,对于理解其他内容也会有很大帮助。

Web缓存主要思想


Web缓存技术的基本思想是利用客户访问的时间局部性原理,对客户已经访问过的内容在Nginx服务器本地建立副本,这样在一段时间内再次访问该数据,就不需要通过Nginx服务器再次向后端服务器发出请求,所以能够减少Nginx服务器与后端服务器之间的网络流量,减轻网络拥塞,同时还能减小数据传输延迟,提高用户访问速度。同时,当后端服务器宕机时,Nginx服务器上的副本资源还能够回应相关的用户请求,这样能够提高后端服务器的鲁棒性。


Nginx缓存实现原理


基于Proxy Store的缓存机制


01

404错误驱动


当Nginx服务器发现,用户请求数据在服务器本地不存在时,会产生404错误,服务器能够捕捉该错误,进一步转向后端服务器请求相关数据,最后将后端请求到的数据传回客户端,并在服务器本地缓存。


02

资源不存在驱动


原理上基本等同于404错误驱动,不同之处在于该方法是通过location块的location if条件判断直接驱动Nginx服务器和后端服务器的通信和Web缓存,而不对资源不存在产生404错误。

配置文件片段:

这两种缓存机制只能缓存200状态下的响应数据,同时不支持动态链接请求。比如:getsource?id=1和getsource?id=2这两个请求,返回的是相同的资源。所以实际上,一般是采用Nginx搭配Squid服务器架构实现方案。


基于memcached的缓存机制


memcached在内存中开辟一块空间,然后建立一个Hash表,将缓存数据通过键/值存储在Hash表中进行管理。memcached由服务端和客户端两个核心模块组成,服务端通过计算“键”的Hash值来确定键/值对在服务端所处的位置。当位置确定后,客户端就会向对应的服务端发送一个查询请求,让服务端查找并返回所需数据。


到这里,关于nginx服务器缓存的内容就暂时告一段落了,希望大家在这篇文章里都能有所收获。如果你有更好的想法,欢迎在评论区留言讨论哦~


————金三银四课程特惠————

马哥教育精英线下Linux班郑州校区开班倒计时,优惠四重享,赠送高达4000元的学习大礼包:

第一重:4月30日前报名,立减400元,名额有限抢完为止;

第二重:4月30日前报名,赠送马哥教育内部Linux知识精讲教材一本(价值666元);

第三重:4月30日前报名,赠送马哥教育实体服务器使用资格(价值1666元);

第四重:4月30日前报名,赠送马哥教育云学堂学习权限1个(价值1999元);

课程详情,请咨询学习顾问:


马哥教育二号女神,甜过初恋的课程顾问

糖豆

Linux面授班,报名优惠400元,名额有限,抢完为止!