nginx缓存
cache of nginx
缓存即数据交换的缓冲区,当A与B进行数据交互时,先去找缓存中是否有数据,若在缓存中找不到想要的数据,那么再去B中找;找到了就直接返回不用和B再打交道了。
1.缓存概述
生活中有很多场景,都和缓存相似。这不过年了,秃头男突然想吃猪肉炖粉条了,就去冰箱里去拿猪肉,发现冰箱里空空如也,于是乎就去集市买了两斤。单身汉一人一顿也吃不完啊,于是切了半斤把剩余的又放冰箱里了,美美的吃了一顿。下次再吃就不用去集市了,直接从冰箱里拿即可,等吃完再去集市买呗。
哲学上说存在即合理,那么缓存的存在肯定有他的优势,相反的,有好处就必然会有坏处,事物总是有两面性的。
我们购买电脑的时候常常会看到CPU的描述会有6m或者8m、二级或者三级缓存,对于普通消费者来说肯定是一脸懵逼不知所云,光听销售员吹的天花乱坠去了。对于开发者来说,缓存已经不是一个陌生的东西了,在这个21世纪快速消费的时代,满足消费者的极致体验和与消费者的快速交互,是互联网产品都要解决的一大难题。从而应运而生的各种技术,百家齐放,相互竞争,以让自家产品稳定运行、响应速度快人一等。
缓存追求的是快。在没有缓存时,一个get请求要从服务器获取数据,一般都会经过服务器方的统一网关入口,然后再到具体的服务器,服务器中存储数据的地方一般都是数据库,所以在服务器这里还要再调用应用程序比如MySQL、Oracle等数据库获取资源数据。
数据库是把数据存放到硬盘中,一读一写是一种IO操作,速度就很慢,而缓存是以电信号的形式存在于内存中的数据,读取的速度和硬盘相比就是一个天上一个地下了。
既然缓存是用电信号表示的,那么是不是没电了,缓存也就消失了。所以缓存的致命缺点就是断电即消失,无法找回,无法修复。而硬盘却可以在断电的情况下存储数据,二者在存储原理上是不一样的,所以快亦有风险。
2.缓存原则
秃头男的冰箱的位置放在厨房好,还是放在卧室好还是大厅好啊?对于做饭来说肯定是放在厨房好咯。所以缓存的第一个原则就是越近越好。
越靠近用户,则带宽等网络资源消耗就越少,路短了用时不就短了,能用本地缓存就不要发网络请求。
第二个原则是能用自家缓存就不要用别人家的缓存,秃头男能买的起冰箱就不要把肉放在隔壁老王家。也就是说,对于服务器来说,能用本机缓存最好,若使用其他机器上的缓存是不是还要发送网络请求,这一来一回是不是就会占用很多资源。
3.web缓存
那么什么是web缓存呢?
web缓存位于内容源web服务器和客户端之间,当访问一个url时,web服务器会去后端服务器取回要输出的内容,然后当下一个请求到来时,如果访问的是同一个url,web服务器则会直接输出内容给客户端,而不是向后端服务器再次发送请求。
web缓存服务器,降低了后端服务器和数据库的负载吗,减少了网络延迟,提高了用户访问速速。
那么我们常用的缓存软件比如redis、memcache,是不是web缓存呢?