缓存是现在系统中必不可少的模块,是高并发高性能架构的一个关键组件。缓存适用于对数据实时性要求不高以及对性能要求高的场景中,可以有效地提升性能,缓解数据压力。对于Web前端开发者来说,主要跟浏览器中的缓存打交道,接下来千锋广州前端小编就给大家讲解一下浏览器缓存机制。
什么是浏览器缓存?
浏览器缓存机制,其实主要就是HTTP协议定义的缓存机制(如:Expires、Cache-control等)。但是也有非HTTP协议定义的缓存机制,如使用HTML Meta标签,Web开发者可以在HTML页面的节点中加入标签,代码如下:
上述代码的作用是告诉浏览器当前页面不被缓存,每次访问都需要去服务器拉取。使用上很简单,但只有部分浏览器可以支持,而且所有缓存代理服务器都不支持,因为代理不解析HTML内容本身,而广泛应用的还是HTTP头信息来控制缓存。
浏览器对于所请求资源的缓存处理有一套完整的机制,主要包含三个策略:存储策略、过期策略、协商策略。存储策略发生在收到请求响应后,用于决定是否缓存相应资源;过期策略发生在请求前,用于判断缓存是否过期;协商策略发生在请求中,用于判断缓存资源是否更新。
缓存又分为强缓存和弱缓存(又称为协商缓存)。其中强缓存包括Expires和Cache-Control,主要是在过期策略生效时应用的缓存。弱缓存包括Last-Modified和ETag,是在协商策略后应用的缓存。强弱缓存之间的主要区别在于获取资源时是否会发送请求。
浏览器下访问资源的方式主要有7种:
(新标签)地址栏回车
链接跳转
前进、后退
从收藏栏打开链接
(window.open)新开窗口
刷新(Command + R / F5)
强制刷新(Command + Shift + R / Ctrl + F5)
使用这7种方式访问资源时,应用缓存的策略会有一些不同。需要注意的是,除此之外,还有一种特殊情况。即在当前地址栏,不改变内容,直接回车,等同于刷新当前页。但是在当前页点击跳转到自身,和链接跳转一致,并不会等同于刷新。
领取专属 10元无门槛券
私享最新 技术干货