Skip to content

待归档 ​

https://www.youtube.com/playlist?list=PLanS_SVm5swimC_m5zWfly0EPJTk7Tsp8 - youtube jsi

https://mp.weixin.qq.com/s/TAyaDRn7gQlk6GOm_WKTHw 这Proxy能干啥

https://mp.weixin.qq.com/s/27o3nUW_sovmmS5KlmXwMg React 的 Suspense 和 ErrorBoundary 还有这种关系

https://mp.weixin.qq.com/s/GbSNPeDhllfsSP6y1LIdNg ES12都增加了哪些新特性

https://mp.weixin.qq.com/s/SvpQtzZNfzIrORCIlYflmw CSS 伪元素

https://mp.weixin.qq.com/s/LI7D3ZUrC385p5LMfR3ouQ 预渲染

https://mp.weixin.qq.com/s/bF6pDnhmK7NJwfUmo7CAZA JS 发起的请求可以暂停吗?

https://mp.weixin.qq.com/s/6mlv6_ClRTW36cgdBiY9Cw curl 上手指南,前端实用工具

https://mp.weixin.qq.com/s/GekGovHyuaY0Bpi4BA6RPw 重复的 eslint

https://mp.weixin.qq.com/s/lHYkY-BOnxl8URY6-o57FA "代码拆分"+"预加载"

https://mp.weixin.qq.com/s/kdpE-zW1ByssMGnQJawsUA 本地存储方案

https://mp.weixin.qq.com/s/L381U-XszdhV-L3Is5fGog 浏览器也拥有了原生的 “时间切片” 能力

https://mp.weixin.qq.com/s/MbLFyGZyTzRUKUacoG70Gg 前端工程化到底是啥

https://mp.weixin.qq.com/s/JwyXcyB6o04fiQtlM3V16A module.exports和exports,应该用哪个

https://mp.weixin.qq.com/s/ET0GpYungWyfEteIA2zvLQ

https://mp.weixin.qq.com/s/0wevn5cZ6J4jNmmO-ZspGw

https://mp.weixin.qq.com/s/-rNjZnRvrJ4uR0HTR4jikw

https://mp.weixin.qq.com/s/MYbdZ6gqWaRSSaDhtR0GWA

https://mp.weixin.qq.com/s/7hT8oyK1m21tQcxbruQYbA

https://mp.weixin.qq.com/s/qH9I4hsY9hwPSqYRk_vYiA

https://mp.weixin.qq.com/s/cJPv0niRXhEFqv4-KN5GBw

https://mp.weixin.qq.com/s/2QSNcyScehZlHQbdA0Aurg

https://mp.weixin.qq.com/s/s0xTsa_jUmkIeKcEoM5B8w

https://mp.weixin.qq.com/s/J9IEJAKutu1ujJWSjnXeFg

https://mp.weixin.qq.com/s/IjsaFKKAfiqKbNb7z5bWNg

https://mp.weixin.qq.com/s/SUmvTan2uOJcVVRnPYwmqA

https://mp.weixin.qq.com/s/SakGTNlckP9vVh49KwRNHw

https://mp.weixin.qq.com/s/OAM_npB2e1qs7UCUCtCzsg

https://mp.weixin.qq.com/s/c74eiXhuEWBpjiRUtKmbEA

https://mp.weixin.qq.com/s/FR_ZMc6flFV-7o2XAmpW6Q

https://mp.weixin.qq.com/s/M0Xt2upAM8-Eb4en7Z2kUw

https://mp.weixin.qq.com/s/MYxAjzY3IrLnMkGh515AkQ

https://mp.weixin.qq.com/s/_WkA1Ta_2LSx8PAXUu1cKA

https://mp.weixin.qq.com/s/oefFOVf1H0La6mOMIfUMUg

https://mp.weixin.qq.com/s/zLFIh_RhjTb7PY2_d3VRGw

https://mp.weixin.qq.com/s/TvFI7otbHIbADEH-qY2mAQ

https://mp.weixin.qq.com/s/U4j9EuHJlHApII6_fzMrHw

https://mp.weixin.qq.com/s/99ZDsxm553Dac48RUoj4BQ

https://mp.weixin.qq.com/s/v2wsNSiSRT7_fic9NStzXA

https://mp.weixin.qq.com/s/hrqFVWh1AAd3TEMk_JQtNA

https://mp.weixin.qq.com/s/iDuEdt6Ut5TZ4iHt1Q2BrA

https://mp.weixin.qq.com/s/SqHTWwbepjjZ42jNi1-uGw

https://mp.weixin.qq.com/s/CBXN6udTy9MjpNecxEAVtQ

https://mp.weixin.qq.com/s/6nEByptTolvkSGWhten3Tw

https://mp.weixin.qq.com/s/I6nGwXTPtl-jy2t0cVQ_4A

https://mp.weixin.qq.com/s/AwkbekrWFQTsGB9wXdFBGw

https://mp.weixin.qq.com/s/j_yrBI_AvZyP6QAB7YKTvQ

https://mp.weixin.qq.com/s/Ylv4mFApxxcyJHFl7OpdLA

https://mp.weixin.qq.com/s/gafFKEDrk6gqCSFYDujSkQ

https://mp.weixin.qq.com/s/zcipIsZvw3XEQLAyi4Kifg

https://mp.weixin.qq.com/s/lzE7WiKNDADlpcmRjrsfYA

https://mp.weixin.qq.com/s/IvvCYfFjuOCAC9ts_jSK_g

https://mp.weixin.qq.com/s/MwSSF8QjITJanUfAM8Z_BA

https://mp.weixin.qq.com/s/y3pVJpM-Bpg5VykEyjj-LQ

https://mp.weixin.qq.com/s/iWbyn6FhilwIPGYeGC3LkQ

https://mp.weixin.qq.com/s/dbUR2zg0qA0lV0CsGwk-ag

https://mp.weixin.qq.com/s/0MwZoBbzr64Yg-v_vR3BwQ

https://mp.weixin.qq.com/s/0bzsHVqxoyl9uth3iymp0A

https://mp.weixin.qq.com/s/WgtaO-P9spM0IZfU1JtJTQ

https://mp.weixin.qq.com/s/MrX6P4LEIJL5kZdV0bK26g

https://mp.weixin.qq.com/s/K3WFuPHH7nKR1c3pycr7MQ

https://mp.weixin.qq.com/s/y8FXNDFQ_K6FF5Ne9IOjpg

https://mp.weixin.qq.com/s/yhZ2qYWDa96zejOHFqvMwQ

https://mp.weixin.qq.com/s/ZvjWusFwRo096K9Bc89bxA

https://mp.weixin.qq.com/s/jaX5aVPrHxv75soFbnfq5A

https://mp.weixin.qq.com/s/s4mGvONAs-2BhPEcUOI7Wg

https://mp.weixin.qq.com/s/HmWOGaimis0yu884LhoZMQ

https://mp.weixin.qq.com/s/m9vtDyodB6gszH3xD70HTQ

https://mp.weixin.qq.com/s/G4rJkjIVkIbSMrCtA4hHDA

https://mp.weixin.qq.com/s/KhuoP31HYpzcngcKY9MhpA

https://mp.weixin.qq.com/s/McE8DcyapQgHQDNamoF7gQ

https://mp.weixin.qq.com/s/aF7nrGOlaxNryJX0ts7pmw

https://mp.weixin.qq.com/s/mGA654VziYVKkKZZF2R8yA

https://mp.weixin.qq.com/s/1j35I48ZyqR5bWAzOdWJcQ

https://mp.weixin.qq.com/s/mbWMaZ2PHJe0HEr9YWDTrQ

https://mp.weixin.qq.com/s/wwK0vf3mjzuq_nDTSwRciw

https://mp.weixin.qq.com/s/XMtCUBdNhpIjZZduXJuZtg

https://mp.weixin.qq.com/s/hLTnbRItiaNwX_1sCIxPJA

https://mp.weixin.qq.com/s/w_kr399RQUfFH2JVrvT_3w

https://mp.weixin.qq.com/s/R9tRwHk9erUypyo3xAfumA

https://mp.weixin.qq.com/s/2ON_7DWO9Dy8jbTcQlgZwA

https://mp.weixin.qq.com/s/c0pYoLaFsUR44l6TsZAZlQ

https://mp.weixin.qq.com/s/a-qqUzyClY9Binwsk2-Ltw

https://mp.weixin.qq.com/s/JKyTE4g6U7LMe-rRxZW1fg

https://mp.weixin.qq.com/s/Q1V9qBAx-nJcIvgNogZmbw

https://mp.weixin.qq.com/s/oAg7ElPQ4n1oQmorWyR9Rw

https://mp.weixin.qq.com/s/83xBrZc1oz4vRxClz0789Q

https://mp.weixin.qq.com/s/xowqcPvZ9TgBbIa6qgz41A

https://mp.weixin.qq.com/s/6CBI3GcPQVi9WQRhII384w

https://mp.weixin.qq.com/s/pdvkq2Y4b9JwJxWR3gKpxw

https://mp.weixin.qq.com/s/CZAWkARhvvoMa2Zk8Uv2Lg

https://mp.weixin.qq.com/s/ob06V6ChPwOFUqabQSPv5A

https://mp.weixin.qq.com/s/L3WWPQPCxwCcOHGL9P-4zg

https://mp.weixin.qq.com/s/oDR7AAHXSgackL2IR6pUFw

https://mp.weixin.qq.com/s/8c-NGNhCHbYVlQNd2Fxy-Q

https://mp.weixin.qq.com/s/hhrCgCDPmzm_CHLHEYh7bw

https://mp.weixin.qq.com/s/5ImT54MaPon8S0XPe1KXcw

https://mp.weixin.qq.com/s/SiULe7HVNbvxaa0LtlITPg

https://mp.weixin.qq.com/s/kqWijzNHuiTZ4FD2WKRF5Q

https://mp.weixin.qq.com/s/e3haMV9nMvxWCTCGCvuHdg

https://mp.weixin.qq.com/s/Il2th79CYuRQIPJtHItZKA

https://mp.weixin.qq.com/s/QeWrIxROU5dQ6tChnQM6SA

https://mp.weixin.qq.com/s/J2cPSPVDDyR9nJ2AdazF7Q

https://mp.weixin.qq.com/s/AYfHnorRQf94bQxm-uOhgw

https://mp.weixin.qq.com/s/GB9-j9rDK6k_zDosiIMLyA

https://mp.weixin.qq.com/s/MetC4UWf3Zmj1wAAv6_yAw

https://mp.weixin.qq.com/s/4kkjju0NAVaUl9tWFddGPQ

https://mp.weixin.qq.com/s/dDLy1PH8ga30k8728ixICQ

https://mp.weixin.qq.com/s/aGQ-mN9qMEixOCHwNirveQ

https://mp.weixin.qq.com/s/mbxniBFRZbq7wIGaxuzFOA

https://mp.weixin.qq.com/s/6KsYgRV7ajhGv8X6BzJTow

https://mp.weixin.qq.com/s/kuDo7t9EN5O3bHpBp6Gs_g

https://mp.weixin.qq.com/s/OJ6QhI0pL159XbuFVes-TA

https://mp.weixin.qq.com/s/GH_GrE4cRC4tw3yNpJ8zoA

https://mp.weixin.qq.com/s/ZdkIoOZh-6l2epSWheru4w

https://mp.weixin.qq.com/s/1oyOJLy0in5nIj_x0w3A2A

https://mp.weixin.qq.com/s/UhiRC8pHftF0IA-7L3TOIg

https://mp.weixin.qq.com/s/uclQHSFpFBRDU3gp9n9FTw

https://mp.weixin.qq.com/s/j4hvUNL70s93OC3o293gDw

https://mp.weixin.qq.com/s/qZAiTWLKtq0qzc1xSQxCqA

https://mp.weixin.qq.com/s/8xd_Bh-7H77WD-apYodkJw

https://mp.weixin.qq.com/s/25G8QA3Gjf6ZaVgfWhk7cA

https://mp.weixin.qq.com/s/B1bbkXqCsU2rZEiyhhuyOg

https://mp.weixin.qq.com/s/TOo59NqAExwXFeUvzQBEXA

https://mp.weixin.qq.com/s/P-s-xdRXVrABMuDTHji7ow

https://mp.weixin.qq.com/s/NOlJv-OahbDYwdJmoTdvDw

https://mp.weixin.qq.com/s/Iw0aNjSzDRRqhUy8yQHdnA

https://mp.weixin.qq.com/s/I5I0P4hEIev4nYT-tcuGug

https://mp.weixin.qq.com/s/35SlY5DjI2C4xAdTwy_nKg

https://mp.weixin.qq.com/s/QaFIfNS5NRFgRZuEc8pdrA

https://mp.weixin.qq.com/s/56QLZx-aJsIpZvzn4qnkRA

https://mp.weixin.qq.com/s/LzOWUkx66qPYCiNLYBrR7w

https://mp.weixin.qq.com/s/pWsntJbJnBip5CbP7HkvFg

https://mp.weixin.qq.com/s/Kbz6FHTimK1FfXCWYl2lhw

https://mp.weixin.qq.com/s/feT6wZ3y9L20mG5NFBHb-Q

https://mp.weixin.qq.com/s/NhZnPdN1eBt7PtEj5m0dIQ

https://mp.weixin.qq.com/s/OBb0zrfGAI6w4ILvT5T5-A

https://mp.weixin.qq.com/s/CjSXdns1URlJ8Yztk0vbtwJavaScript 基础,ES6语法、 script标签 前端模块化整理归档目录 echarts动画实现原理 了解canvas吗 如何实现组件滑动切换效果 对语义化的理解 HTML5有哪些语义化标签 网络通信,重点有浏览器缓存、Http2.0、Https通信过程、TCP与UDP、CDN缓存等。简述下 TLS 握手过程 px转其他单位 vue-router两种模式下如何实现的url到组件的映射 HTML和CSS,这块被问的内容比较少,重点从布局入手,比如单位、盒模型、定位、响应式布局等知识点。

前端框架,框架的底层原理是一定会问的,至少要深入掌握一个前端框架。目前业界内比较流行的框架是 React 和 Vue,React 的知识点有 React diff、生命周期、Fiber 架构、Hooks 等;Vue 的知识点有Vue diff、响应式原理、Vue3.0新特性等。

打包工具,主要围绕Webpack展开,比如loader和plugin原理、webpack构建流程、热更新原理、性能优化等。除此以外,打包界的新宠esbuild也可以了解下。

加分项,除了JavaScript外,还了解哪些编程语言

CSS换行 ​

F12禁止用户复制和查看文本 ​

如何防止网页内容被爬 ​

v8内存管理 ​

v8 unsafe ​

spa的优缺点 ​

node模块引入的方式 module.export与其他与什么不同 ​

异步加载的方式有哪些 ​

async defer ajax 动态创建script标签 iframe引入 模块引入

cookie sessionStorage localStorage 区别? ​

生命周期 ​

cookie是直到指定时间,或者当前回话结束

session是到当前会话结束

local是一直有效

大小 ​

cookie是4k

session和local是5M

共享 ​

cookie是同域名共享

session是当前页签下同域名共享

local和cookie一样

JS数据类型有哪些,区别是什么? ​

string,number,boolean,null,undefined,symbol,bigint,object

你对闭包的理解? ​

闭包是将函数暴露出去,其中引用的变量就可以被外部访问到

比如模块或者回调函数

promise是什么与使用方法? ​

跨域是什么?如何解决跨域问题? ​

说一说BFC ​

Vuex是什么,每个属性是干嘛的,如何使用 ? ​

JavaScript有几种方法判断变量的类型? ​

样式优先级的规则是什么? ​

引用方式

important》行内》嵌入》外连

顺序

同优先级的后面会覆盖前面

选择器

id>class>tag=::after=prop>后代>子>*>默认

选择器判断规则,首先计算出ABC的个数

  • A:id选择器的个数
  • B:类,伪类,属性选择器的个数
  • C:标签和伪元素的个数
  • 重复选择器计算在内,比如 .class.class
  • 特殊选择器
    • :not() :has() :is() 选括号中最复杂的一个选择器优先级
    • :nth() 在上面的规则基础再加一个B
    • :where() 优先级是0
  • 其他都计算0

CSS权重在一开始是256,后来扩大,可以理解为无法进位,也就是ABC单独比较

JS实现异步的方法? ​

回调函数、事件监听

promise,生成器,async,await

Vue2.0 双向绑定的原理与缺陷? ​

Object.defineProperty监听

缺点是一次性递归开销比较大,无法监听对象属性增删,数组下表对应数据改变无法监听

数组去重都有哪些方法? ​

新建对象,遍历数组赋值,最后转为数组

新建数组,遍历数组,每次判断IndexOf

遍历方法可以使用reduce和filter优化

Set

null 和 undefined 的区别,如何让一个属性变为null ​

null不是对象,之所以typeof 判断会是object是因为null的二进制都是0,对象是判断前三位是否为0

es6中箭头函数? ​

没有this,不能new,没有argument,没有原型和super,

this指向(普通函数、箭头函数)? ​

箭头函数:定义时所在作用域,无法更改

普通:直接调用是全局,对象属性调用是对象,显示绑定就是绑定对象

说几个未知宽高元素水平垂直居中方法 ​

flex,grid

absolute:top:50%;transform:traslateY(-50%)

JS变量提升? ​

变量在声明前就能使用,var会提升到当前作用域顶,只会提升声明,函数会提示声明与赋值,let和const声明提升后也无法访问,不用var声明a会在执行时提升和赋值,块级作用域内的函数提升会在块级作用域内外各提升一次

**HashRouter 和 HistoryRouter的区别和原理? ​

hash需要用#区分,history需要用/区分

hash直接部署即可使用,history需要后台配合解析路由

hash原理是监听url的location对象的hash值

history原理是history.pushState做页面跳转

事件循环Event loop,宏任务与微任务? ​

Vue3.0 实现数据双向绑定的方法 ? ​

说一下Diff算法? ​

patch

  • 新节点存在,旧节点不存在,创建新节点

  • 新节点不存在,旧节点存在,删除旧节点

  • 都存在时使用patchVnode对内容比较

patchVnode

  • 判断子节点情况
    • 新子节点存在,旧的没有,创建新子节点
    • 新子节点没有,旧的有,删除旧的
    • 新旧都有,进行updateChildren函数对比

updateChildren

  • 如果是文本节点,直接更新文本
  • 不是文本节点,遍历对比
  • 头头对比,尾尾对比,头尾对比,尾头对比,匹配成功则对比其他子节点
  • 如果有key,则查找是否有匹配的key

垃圾回收机制 ​

** vue 的 keep-alive** ​

XSS攻击是什么? ​

利用用户输入的数据,将恶意数据传输,使用编码过滤可以规避

反射型:诱导用户访问网址,url中拼接了恶意代码,可以插入数据到html或者插入js,css中

存储型:利用评论等表单页面提交恶意代码到服务器,导致服务器和其他用户都有可能被攻击

CSRF攻击是什么? ​

1 登陆网站A

2 未登出的情况下访问危险网站B

3 危险网站会诱导用户发出网站A的请求,比如发起一个跨域表单请求

可以通过验证码等操作来防护,但是用户体验差

校验referer字段,限制请求来源

使用token校验

js继承的方法和优缺点? ​

函数都有显式原型对象prototype,对象都有构造函数construtor以及隐式原型__proto__

对象可以通过隐式原型访问到构造函数的显式原型对象,以null为顶端

原型链继承:通过修改prototype直接继承父级的实例,优点是继承了父级的一切原型链上的属性,但是修改属性会影响其他实例

借用构造函数继承:在子构造函数中调用父级的构造函数,这样的话继承的属性修改不会影响其他实例,但是没有继承原型链

寄生式继承、原型式继承:与上面两种类似,但是子类继承的不是实例,而是一个继承父级原型链的空对象

寄生组合式继承:在空对象构造时再调用一次父级构造函数

defer和async区别? ​

都是异步加载,但是defer会等待页面加载完成后按顺序执行,async会立刻执行

浏览器如何渲染页面的? ​

解析html,生成dom树和样式树,遇到js会先加载和执行js

html被完成解析完成后。就会加载onload事件

生成渲染树

回流,重绘

构建DOM树 ​

解析html标签属性等,如果文档格式良好,会解析很快

解析过程中遇到图片,css等静态资源,会继续解析,异步加载

遇到js会阻塞解析,预加载扫描器会加速这个过程

css加载不会影响html解析,但是会阻塞js

DOM每次更新时会更新AOM无障碍树

构建CSSOM树 ​

和DOM树类似,但是速度很快,通常少于一次DNS查询所需的时间

JS编译 ​

编译器对脚本进行编译,生成抽象语法树

解析的同时生成作用域

渲染 ​

在解析步骤中创建的DOM树和CSSOM树组合为一个Render树。用于计算元素布局和绘制

布局,回流:第一次计算节点大小与位置叫布局,之后重新计算叫回流或者重排,比如图片加载后会有一次回流

绘制:将布局好的元素框转换为屏幕哈桑的实际像素,绘制在屏幕上

video,canvas,和css3的一些属性会让绘制过程在gpu层执行,能提升性能

合成 ​

绘制会有多个层,所以相互重叠时要进行合成,确保以正确顺序显示

new会发生什么? ​

创建一个空对象,将对象的隐式原型指向构造函数的显式原型,关联原型链

绑定this指向对象本身

返回对象本身,如果构造函数有返回值时需要判断,是对象则返回,原始类型则返回新对象

浏览器输入URL发生了什么? ​

浏览器匹配url,查找域名对应ip,DNS解析,TCP连接,网关,防火墙,nginx代理,握手,请求,服务器处理逻辑并返回html,SetCookie,浏览器解析Html,下载静态资源,生成DOM,CSSOM,Render树,开始布局,分层绘制,组合,激活js

组件通信的方式? ​

props emit

attrs listeners

provoid inject

vuex

eventbus

创建ajax过程 ​

js
const xhr = new XMLHttpRequest()
xhr.open('post','http://www.xxx.com/api',true)
xhr.setRequestHeader('Content-Type','application/x-www-form')
xhr.send('user=1&sex=male')
xhr.onreadystatechange = ()=>{}

fetch 请求方式? ​

js
fetch('http://www.xxx.com/api',{method:'POST',headers:{},body:''})
.then(res=>res.json())
.then(data=>console.log(data))

有什么方法可以保持前后端实时通信? ​

  • 定时轮训:请求数会很多,但实现简单
  • 长轮询:等待时间增长,但带宽资源消耗变大
  • iframe:能够实时达到,兼容性好,但是长期维持长连接开销增加
  • websocket:优点是性能好,实时性好,缺点是兼容性不能保证,不支持断开重连
  • SSE:单向推动数据

重绘、重排区别如何避免? ​

减少改变大小的频率,dom变化尽量一次性完成

尽量使用css3动画,会有gpu优化

创建BFC,独立渲染

Vue 列表为什么加 key ​

提高diff效率

v-for默认是使用就地复用原则,不会变动dom,而是直接更新元素属性内容,如果有key辅助定位,就可以直接移动dom,不用更新属性

vue-router 实现懒加载的方法? ​

js
components:()=>import(/*webpackchunkName:"a"*/../views.A.vue)

前端性能优化手段? ​

图片压缩、节流防抖,http缓存,本地缓存,keepalive,减少dom变化,ssr服务端渲染,缓存dom,路由懒加载,

性能优化有哪些性能指标,如何量化? ​

服务端渲染? ​

优点是减少了网络传输成本,响应快,用户体验好,首屏渲染快,对SEO友好

缺点是开发条件受限,部分生命周期的钩子函数无法使用,部署要求更多,需要Node来运行渲染器,并且对服务器的性能要求更高,因为server会消耗服务器资源

https和http比较,安全在哪里,怎么对数据加密; ​

他的数据不是明文的,是通过密钥加密的,并且浏览器堆SSL认证网址有标识,不容易被盗版网站引导

流程是浏览器先获取公钥,然后自己生成一个密钥,使用公钥加密,发到服务器,服务器使用私钥解密后得到了客户端密钥,用这个密钥进行会话

http2.0以后雪碧图还有没有意义 ​

从http1.1以后,就默认支持长连接,多个http请求依次共享一个tcp连接,大大减少了请求消耗,但是有请求阻塞

http2.0多路复用更快了,反而应该将大文件拆分为模块,可以更好的提升速度

webpack 常用的配置项 ​

entry output loader plugin

深拷贝 ​

Object.assign可以实现外层深拷贝

JSON可以实现深拷贝,但是不支持undefined和symbol以及内置类型都不能拷贝

递归拷贝

lodash的cloneDeep函数

浏览器缓存 ​

浏览器缓存在进程未关闭时会使用内存缓存,否则是硬盘缓存

没有缓存 ​

浏览器发起请求,检查有没有缓存标识,没有命中缓存,则请求到服务器

服务器返回请求结果与缓存规则

浏览器将请求结果和缓存标识存入到浏览器缓存中

强缓存 ​

浏览器请求缓存,命中缓存并且没失效,则直接使用缓存结果

控制强缓存的字段是expires和cache-control(优先级高),后者时间是相对值

expires:强缓存到期时间

Cache-Control:max-age=xxx 时间 no-cache 协商缓存 no-store 不缓存

协商缓存 ​

具备缓存标识,但是强缓存已过期,会携带缓存标识发起http请求协商缓存

服务器使用缓存标识查看文件是否更新,如果没有更新则返回304,使用缓存,如果更新则返回200,返回浏览器最新的文件

协商缓存的标识有last-modified/if-modified-since 和 etag/if-none-match(优先级高)