当用户通过浏览器发起一个数据请求的时候,浏览器会通过以下几步来获取数据:

浏览器中的操作对缓存的影响

http缓存_http缓存_ie11浏览器缓存怎么清理缓存

浏览器缓存机制

安卓、iOS缓存机制

APP上的缓存机制和浏览器缓存的原理类似,APP与服务器交互的协议同样是大多基于HTTP(S)。

先普及下基础知识:手机内存包括运行内存和内部存储。运行内存是用来运行程序的,不能用来永久存储数据,手机一旦关机或杀死进程,在内存中的所有数据都将会丢失。内部存储相当于计算机中的硬盘的角色,用于存储操作系统和应用程序的存储介质。

iOS的本地缓存数据存在磁盘存储(内部存储)中,由于Android手机通常将内部存储器固定在芯上,所以一般无法更换内部存储器的。 为了增强Android手机的存储能力,很多Android手机都支持扩展的SD卡(相当于计算机的U盘或者移动硬盘)功能。所以,Android手机存储缓存是可以选择数据存储位置的。

APP端存储数据的时候,会存储很多字段内容,一般情况下后台会给每条数据设定一个独立的id值,那么前端在请求数据的可以先查询本地缓存的数据中,最新的一条数据的id值,通过网络请求,把这个id值发给服务端,服务端会根据这个id在后台服务器中查询是否有比这个id值更大(更新)的数据存在,如果有就把新的数据返回给前端APP。

数据库缓存

数据库的缓存机制分为两个层面。

由数据库提供,可以对数据表建立的高速缓存。数据库的数据临时保存在一个位置上,再次同样的请求直接把这个数据返回去,而不需要再次去查询各种表取数据了,减少了查数据库的时间,提升效率。并不是所有的历史记录都缓存起来,要有策略,比如只缓存两个月的数据http缓存,并且两个月之前有请求过之后不再请求该数据的时候就会回收,就是把这条记录抹掉,就近多次请求的才会保存。时间过长、使用率不高的优先清除,要不然缓存太多就失去了缓存的本质和意义。在数据库中,数据都是存放在磁盘中的。虽然数据库层做了对应的缓存,但这种数据库层次的缓存一般针对的是查询内容,一般只有表中数据没有变更的时候,数据库对应的缓存才发挥了作用。有时并不能减少业务系统对数据库产生的增、删、查、改产生的庞大压力。此时,一般的做法是在数据库与业务服务器之间增加一个缓存服务器,比如我们熟悉的redis。客户端第一次请求的数据从数据库拿出后就放到了redis中,数据不过期或不更改的前提下,下一次的请求都从redis中直接拿数据,这样做极大的缓解了数据库的压力。

http缓存_ie11浏览器缓存怎么清理缓存_http缓存

服务器缓存业务服务器缓存

业务服务器缓存是将动态页面直接生成静态的页面放在服务器上的硬盘里,用户调取相同页面时,静态页面将直接下载到客户端,不再需要通过程序的运行和数据库的访问,大大节约了服务器的负载。

每次访问页面时,会检测相应的缓存页面是否存在,若不存在,则连接数据库得到数据渲染页面并生成缓存页面文件,这样下次访问的页面文件就能发挥作用了。

举一个小例子:

http缓存_ie11浏览器缓存怎么清理缓存_http缓存

用户A访问a页面,服务器解析a页面返回给用户A,同时在服务器内存上做一个映射,把a页面缓存在服务器的硬盘上。用户B访问a页面http缓存,服务器直接根据内存上的映射找到相应的页面缓存,直接返回给用户B。这样做减少了服务器对同以页面的重复解析。

代理服务器缓存

http缓存_ie11浏览器缓存怎么清理缓存_http缓存

代理服务器是客户端和业务服务器之间的中间服务器,客户端先向这个中间服务器发起请求,经过处理后,再将请求转发到业务服务器。代理服务器缓存的运作原理跟浏览器的运作原理差不多,只是规模更大。可以把它理解为一个共享缓存,不只为一个用户服务,一般为大量用户提供服务,因此在减少相应时间和带宽使用方面很有效,同一个缓存数据会被重复使用多次。

以上,就是关于缓存机制的简单总结。产品汪们,再涉及项目中的缓存机制时,就不怕被程序猿们怼了!

作者:流年,互联网产品设计师,4年互联网产品设计经验。

限时特惠:本站每日持续更新海量设计资源,一年会员只需29.9元,全站资源免费下载
站长微信:ziyuanshu688