浏览器缓存机制是什么

介绍

这篇文章主要介绍了浏览器缓存机制是什么,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。

一、前言

关于页面性能优化,浏览器缓存必定是一个绕不过的话题,判断一个网站的性能最直观的就是看网页打开的速度,而提高网页反应速度的一个方式就是使用缓存。一个优秀的缓存策略可以缩短网页请求资源的距离,减少延迟,并且由于缓存文件可以重复利用,还可以减少带宽,降低网络负荷,因此理解浏览器的缓存机制,就显得尤为重要。

二、缓存类型

<强>缓存在宏观上可以分成两类:私有缓存和共享缓存。共享缓存就是那些能被各级代理缓存的缓存。私有缓存就是用户专享的,各级代理不能缓存的缓存

<强>微观上可以分下面几类:

1。浏览器缓存

<强>缓存存在的意义就是当用户点击回按钮或是再次去访问某个页面的时候能够更快的响应。尤其是在多页应用的网站中,如果你在多个页面使用了一张相同的图片,那么缓存这张图片就变得特别的有用。<强>浏览器先向代理服务器发起网络请求,再将请求转发到源服务器强。其中<强>浏览器缓存包括强缓存和协商缓存强,下文有详细介绍。本文主要侧重点就是针对于浏览器缓存。

2。CDN缓存

CDN缓存一般是由网站管理员自己部署,为了让他们的网站更容易扩展并获得更好的性能。通常情况下,浏览器先向CDN网关发起网络请求,网关服务器后面对应着一台或多台负载均衡源服务器,会根据它们的负载请求,动态将请求转发到合适的源服务器上。从浏览器角度来看,整个CDN就是一个源服务器,从这个层面来说,浏览器和服务器之间的缓存机制,在这种架构下同样适用。

3。代理服务器缓存

代理服务器是浏览器和源服务器之间的中间服务器,代理转发响应时,缓存代理会预先将资源的副本(缓存)保存到代理服务器上。当代理再次接收到对相同资源的请求时,就可以不从源服务器那里获取资源,而是将之前缓存的资源作为响应返回。

4。数据库缓存

数据库缓存是指,当网络应用的关系比较复杂,数据库中的表很多的时候,如果频繁进行数据库查询,很容易导致数据库不堪重荷。为了提供查询的性能,将查询后的数据放到内存中进行缓存,下次查询时,直接从内存缓存直接返回,提供响应效率。

5。应用层缓存

应用层缓存是指我们在代码层面上做的缓存。通过代码逻辑,把曾经请求过的数据或资源等,缓存起来,再次需要数据时通过逻辑上的处理选择可用的缓存的数据。

三、缓存过程分析

浏览器与服务器通信的方式为应答模式,即是:浏览器发起HTTP请求——服务器响应该请求,<强>那么浏览器怎么确定一个资源该不该缓存,如何去缓存呢> 浏览器对于缓存的处理是根据第一次请求资源时返回的响应头来确定的强。具体过程如下图:

浏览器缓存机制是什么

由上图我们可以知道:

<李>

浏览器每次发起请求,都会先在浏览器缓存中查找该请求的结果以及缓存标识

<李>

浏览器每次拿到返回的请求结果都会将该结果和缓存标识存入浏览器缓存中

以上两点结论就是浏览器缓存机制的关键,它确保了每个请求的缓存存入与读取,只要我们再理解浏览器缓存的使用规则,那么所有的问题就迎刃而解了,本文也将围绕着这点进行详细分析。为了方便大家理解,这里我们根据是否需要向服务器重新发起HTTP请求将缓存过程分为两个部分,分别是强缓存和协商缓存。

四、强缓存

<强>强缓存:不会向服务器发送请求,直接从缓存中读取资源,在chrome控制台的网络选项中可以看到该请求返回200的状态码,并且大小显示从磁盘缓存或内存缓存。

浏览器缓存机制是什么

这里以我的简书博客的请求为例,状态码为灰色的请求则代表使用了强制缓存,请求对应的大小值则代表该缓存存放的位置,分别为从内存缓存和磁盘缓存。这里或许小伙伴会有这样的疑惑:

浏览器缓存机制是什么