浏览器的缓存机制

前言

这也是一道很基础的面试常考题。当涉及到网络浏览器的速度和性能时,缓存机制是一个不可忽视的关键因素。无论是浏览网页、查看图片还是播放视频,缓存都发挥着至关重要的作用。缓存机制我们就从强缓存和协商缓存两个方面来说。

强缓存

  1. Cache-Control

    其实缓存机制简单来说就是对一部分的请求将其结果缓存在浏览器中,在有效时间内重复请求则无需再次访问服务器。直接从浏览器的缓存资源中获取即可。 第一个Cache-Control 就是通过在请求头中设置Cache-Control:max-age ,则在max-age 内重复请求则无需访问服务器。

js 复制代码
res.writeHead(status, {
'Content-Type': 'text/html;charset="utf-8"', 
'Cache-Control': 'max-age=86400'
})
  1. Expires Expires 和第一个Cache-Control类似,都是直接在响应头中设置过期时间即可。

协商缓存

其实浏览器本身并没有强缓存和协商缓存的区分,这些都是程序员为了工作中方便称呼而取的名字。协商缓存本质上其实就是改写了缓存过期的机制,让缓存的生命周期在一个合理的范围,不会太早过期也不会在浏览器中保存过于长久。增强用户的体验。

  1. If-None-Match:etag

If-None-Match:etage 在浏览器首次请求返回数据时会带上这个etag,浏览器端就将其保存。在下一次请求时就带上并和服务端保存的进行对比,如果一致直接返回304从本地缓存中提取结果。不一致则重新请求并带回新的etag。这个etag可以直接使用缓存的整个文件进行一个转码,这样在文件修改时就能够生成一个新的etag。

  1. If-Modified-Since

这个用法也和If-None-Match:etag 是差不多的,这个一般是通过文件的last-modified属性,和上一次保存的last-modified时间戳进行对比,如果上一次的时间早于这次返回的时间也进行一个更新。

尾声

本文主要目的是为了带大家了解浏览器缓存机制这个概念,可能讲的并没有很深入,但是可以让你在面试的时候回答面试官的问题了。但是还是建议大家可以深入了解一下,因为缓存机制在平时的工作中也是能够用到的。我们还是需要会使用的。

相关推荐
夜雪闻竹3 分钟前
React Query + REST API 最佳实践
前端·react.js·前端框架
段ヤシ.4 分钟前
回顾Java知识点,面试题汇总Day12:tomcat、 Java Web(持续更新)
java·前端·tomcat·java web
JAVA学习通6 分钟前
从 Bean 到微服务:一张图吃透 Spring 全家桶底层原理
java·前端·spring
古韵7 分钟前
前端请求库的下一个进化方向:从 Promise 到策略化
前端
独特的螺狮粉9 分钟前
蛋鸡养护周期管理系统 - 鸿蒙PC Electron框架完整实现指南
前端·javascript·华为·electron·前端框架·开源·鸿蒙
忧郁的蛋~14 分钟前
ASP.NET Core Web API 完全指南:请求管道、认证、错误处理到生产部署
前端·后端·asp.net·.net
Raink老师15 分钟前
【AI面试临阵磨枪-96】A2A 通信模式:请求响应、发布订阅、事件广播、消息队列?
面试·职场和发展
我穿棉裤了24 分钟前
解决el-form表单校验时显示的红色星号与文字对齐的问题
前端·javascript·vue.js
copyer_xyf26 分钟前
Python 类全面总结
前端·后端·python
copyer_xyf30 分钟前
Python 类型注解:从 TypeScript 迁移理解
前端·后端·python