首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
just_to_do
广州大学华软软件学院 前端工程师
关注
已关注
取消关注
实用
@阿珊和她的猫:
前端面试必备 | 浏览器缓存篇(P1-10)
文章目录 什么是浏览器缓存?它在前端开发中的作用是什么? 解释一下浏览器缓存中的强缓存和协商缓存的概念及其区别。 HTTP响应头中的Cache-Control和Expires分别用于设置什么类型的缓存策略? 什么是ETag?它在浏览器缓存中的作用是什么? 解释一下缓存验证的过程是如何进行的(即协商缓存的机制)? 如果要禁用浏览器缓存,你会采取什么措施? 如何在前端代码中设置缓存策略,以便利用浏览器缓存? 解释一下缓存清除(缓存刷新)的几种方法和情况。 什么是缓存穿透?如何在前端防止缓存穿透的问题? 解释一下前端开发中常见的缓存失效场景及其解决方案。 1. 什么是浏览器缓存?它在前端开发中的作用是什么? 浏览器缓存是指浏览器在访问网页时将一些数据(如HTML、CSS、JavaScript文件、图像等)存储在客户端本地的临时存储空间中。这样,在用户再次访问同一个页面时,浏览器可以直接从缓存中加载这些数据,而无需重新从服务器下载。 浏览器缓存在前端开发中起到了几个重要的作用: 提升性能和加快加载速度:通过使用缓存,浏览器避免了重复下载相同的资源文件,减少了服务器的负担和网络传输时间,从而加快了页面加载速度。 减少网络流量和节省带宽:如果网页的资源文件已经存在于浏览器缓存中,并且没有过期,那么浏览器可以直接从缓存中获取资源,而无需再次向服务器请求,从而减少了网络流量和带宽的消耗。 离线访问支持:浏览器缓存还可以使网页在离线状态下继续访问,如果用户已经访问过某个页面并缓存了相应的资源,当用户离线时,浏览器可以从缓存中加载并显示页面内容。 在前端开发中,开发者可以利用浏览器缓存来优化网页性能和用户体验。通过正确地设置缓存策略,开发者可以控制文件的缓存时间、缓存级别以及是否允许缓存等,从而实现更好的资源管理和更新策略。同时,开发者还可以使用版本控制或文件指纹等技术来确保更新的文件可以被浏览器正确地识别和获取,避免缓存旧的文件造成的问题。总之,合理利用浏览器缓存可以显著提升网页加载速度和性能,提升用户体验。 2. 解释一下浏览器缓存中的强缓存和协商缓存的概念及其区别。 在浏览器缓存中,可以通过两种方式来控制缓存的行为:强缓存和协商缓存。 强缓存(Cache-Control 和 Expires):强缓存是通过在服务器响应头中设置相关的缓存策略信息,使浏览器在接收到响应后直接从缓存中获取资源,而无需与服务器进行通信。 Cache-Control:该响应头字段指定了资源的缓存策略。常见的值包括: max-age=<seconds>:指定资源在缓存中的有效时间,单位为秒。例如,max-age=3600表示资源在缓存中有效一小时。 no-cache:表示每次请求都要与服务器进行验证,不能直接使用缓存。 no-store:表示不缓存任何请求或响应的内容。 Expires:该响应头字段指定了资源的过期时间,是一个具体的日期时间。当浏览器接收到带有 Expires 响应头的资源时,会将资源缓存在本地,并在过期时间之前直接使用缓存。 强缓存优先级高于协商缓存,当强缓存生效时,直接使用缓存,不会发送请求到服务器。 协商缓存(Last-Modified 和 ETag):协商缓存是在浏览器发送请求时与服务器进行通信,通过比较资源的标识符来确定是否使用缓存。 Last-Modified 和 If-Modified-Since:服务器在响应头中返回资源的最后修改时间(Last-Modified),浏览器在后续请求中通过 If-Modified-Since 头字段将上次请求返回的最后修改时间发送给服务器。如果资源在此时间后没有发生变化,服务器会返回 304 Not Modified 状态码,告诉浏览器可以使用缓存。 ETag 和 If-None-Match:服务器在响应头中返回资源的唯一标识符(ETag),浏览器在后续请求中通过 If-None-Match 头字段将上次请求返回的 ETag 发送给服务器。如果资源的 ETag 与服务器上的匹配,服务器会返回 304 Not Modified 状态码。 协商缓存是根据服务器与浏览器之间的通信来确定是否使用缓存。如果协商缓存生效,服务器会返回很小的响应结果,节省了带宽的使用。 区别: 强缓存是通过在服务器响应头中设置缓存策略信息,浏览器在接收到响应后直接从缓存中获取资源。而协商缓存是在请求时与服务器通信,由服务器返回状态码来决定是否使用缓存。 强缓存的优先级比协商缓存高,如果强缓存生效,浏览器不会发送请求到服务器。而协商缓存需要发送请求到服务器进行验证。 强缓存使用 Cache-Control 和 Expires 头字段进行控制,而协商缓存使用 Last-Modified 和 ETag 头字段进行验证。 强缓存适用于静态资源,而协商缓存适用于需要频繁变动的资源。 通常情况下,开发者可以结合使用强缓存和协商缓存策略,以最大程度地提高缓存的效果和性能。 3. HTTP响应头中的Cache-Control和Expires分别用于设置什么类型的缓存策略? Cache-Control 和 Expires 是用于设置强缓存的缓存策略。 Cache-Control:Cache-Control 是一个用于指定缓存行为的响应头字段。它可以通过设置不同的指令来控制缓存的行为。 max-age=:指定资源在缓存中的最大有效时间,单位为秒。例如,Cache-Control: max-age=3600 表示资源在缓存中有效一小时。 no-cache:表示每次请求都要与服务器进行验证,不能直接使用缓存。 no-store:表示不缓存任何请求或响应的内容。 public:表示响应可以被任何缓存(包括客户端和中间代理服务器)缓存。 private:表示响应只能被客户端缓存,中间代理服务器不应该缓存响应。 这些指令可以单独使用或者组合使用,以定义缓存的行为。通过 Cache-Control,开发者可以灵活地控制缓存的有效期、缓存级别和缓存的访问权限。 Expires:Expires 是一个响应头字段,用于指定资源的过期时间,是一个具体的日期时间。浏览器在接收到带有 Expires 响应头的资源时,会将资源缓存在本地,并在过期时间之前直接使用缓存。 例如,Expires: Wed, 21 Oct 2023 07:28:00 GMT 表示资源在 2023 年 10 月 21 日 07:28:00 GMT 之前有效。 Cache-Control 是 HTTP/1.1 的标准字段,而 Expires 是 HTTP/1.0 的字段。Cache-Control 提供了更多的缓存控制选项,更为灵活,并且在功能上覆盖了 Expires 的功能。因此,在支持 HTTP/1.1 的情况下,建议优先使用 Cache-Control 来设置缓存策略。 同时,需要注意的是,如果同时使用了 Cache-Control 和 Expires,Cache-Control 的优先级更高。因为 Cache-Control 是比 Expires 更新的规范,并且提供了更多的缓存控制选项。 4. 什么是ETag?它在浏览器缓存中的作用是什么? ETag(Entity Tag)是一个由服务器生成的用于标识资源的唯一标识符。 ETag 在浏览器缓存中的作用是协商缓存的一部分。当浏览器发送请求时,会将上一次请求返回的 ETag 值通过 If-None-Match 请求头字段发送给服务器。服务器使用这个值与当前资源的 ETag 进行比较,以判断资源是否发生了变化。 如果服务器发现资源的 ETag 值与浏览器发送的匹配,并且资源没有发生变化,服务器会返回状态码 304 Not Modified,表示资源未修改。浏览器收到这个响应后,可以直接从缓存中获取资源,而无需重新下载。 ETag 能够精确地确定资源是否发生了变化,相对于 Last-Modified(最后修改时间)来说更加准确。如果资源的内容发生了任何改变,服务器会为该资源生成新的 ETag 值,而 Last-Modified 只能以秒级别的精度表示时间,可能无法捕捉到非常小的修改。 在大多数情况下,浏览器会使用 Cache-Control 和 ETag(或 Last-Modified)一起使用,以提供更精确和可靠的缓存控制。当 Cache-Control 的缓存过期策略失效时,浏览器会使用 ETag 和服务器进行协商,以便确定是否可以使用缓存的副本。如果服务器返回 304 Not Modified,浏览器就可以直接使用缓存,并避免重新下载资源。这样可以减少网络带宽的使用,并提高页面加载速度和性能。 5. 解释一下缓存验证的过程是
点赞 5
评论 4
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
12-16 21:00
大连民族大学 算法工程师
27届毕业,求大佬拷打简历
链接
海梨花:
我说话难听,你这简历跟没写没啥区别,搜搜别人的简历,用心写,不要随随便便就结束了
点赞
评论
收藏
分享
12-13 16:51
复旦大学 Java
今天分享一个很值得讨论的问题,参加acm对进大厂有没有用
日常帮大家看简历,今天分享一个很值得讨论的问题,参加acm对进大厂有没有用,直接说结论:有点用但用处不大!为什么呢?大家可看看下面这份简历,acm区域赛金,很不错的简历了。但是你看看项目写得一塌糊涂,没有啥含金量。如果你是面试官,我这个岗位确缺人,我需要的是来了之后能干活的,而不是没有项目经验,只会刷题的。acm能证明代码能力强,但是不代表你对于业务和项目理解能力强,所以对于就业导向的同学不要犹豫,抓紧做项目充实简历,投大厂实习!如果一份985土木带大厂实习和这一份简历同时进面试,我们优先要985,学习能力强并且有实习我们愿意相信来了之后上手快
点赞
评论
收藏
分享
12-16 10:34
快手_后端开发实习生(实习员工)
关于双非找实习的一个暴论
最近群里有很多同学找我看简历,问问题,主要就是集中在明年三月份的暑期,我暑期还能进大厂嘛?我接下来该怎么做?对于我来说,我对于双非找实习的一个暴论就是title永远大于业务,你在大厂随随便便做点慢SQL治理加个索引,可能就能影响几千人,在小厂你从零到一搭建的系统可能只有几十个人在使用,量级是不一样的。对双非来说,最难的就是约面,怎么才能被大厂约面试?首先这需要一点运气,另外你也需要好的实习带给你的背书。有很多双非的同学在一些外包小厂待了四五个月,这样的产出有什么用呢?工厂的可视化大屏业务很广泛?产出无疑是重要的,但是得当你的实习公司到了一定的档次之后,比如你想走后端,那么中厂后端和大厂测开的选择,你可以选择中厂后端(注意,这里的中厂也得是一些人都知道的,比如哈啰,得物,b站之类,不是说人数超过500就叫中厂),只有这个时候你再去好好关注你的产出,要不就无脑大厂就完了。很多双非同学的误区就在这里,找到一份实习之后,就认为自己达到了阶段性的任务,根本不再投递简历,也不再提升自己,玩了几个月之后,美其名曰沉淀产出,真正的好产出能有多少呢?而实际上双非同学的第一份实习大部分都是工厂外包和政府外包!根本无产出可写😡😡😡!到了最后才发现晚了,所以对双非同学来说,不要放过任何一个从小到中,从中到大的机会,你得先有好的平台与title之后再考虑你的产出!因为那样你才将将能过了HR初筛!我认识一个双非同学,从浪潮到海康,每一段都呆不久,因为他在不断的投递和提升自己,最后去了美团,这才是双非应该做的,而我相信大部分的双非同学,在找到浪潮的那一刻就再也不会看八股,写算法,也不会打开ssob了,这才是你跟别人的差距。
迷茫的大四🐶:
我也这样认为,title永远第一,只有名气大,才有人愿意了解你的简历
双非本科求职如何逆袭
点赞
评论
收藏
分享
10-24 12:48
湖南财政经济学院 驱动开发
秋招到了个什么
双尔:
反手回一个很抱歉,经过慎重考虑,您与我的预期暂不匹配,感谢您的投递
点赞
评论
收藏
分享
12-11 12:22
正浩创新EcoFlow_电力电子软件工程师(准入职员工)
正浩创新内推,正浩创新内推码
26届女硬件工程师丨正浩创新面经及流程9.1一面1.自我介绍2.有无相关电源设计项目或经历,并浅谈3.DCDC拓扑手撕(但是我当时没带纸笔所以口头描述),BUCK和BOOST,同步异步的区别和优缺点,同步电路的控制方式(施加什么PWM波形,如何控制MOS通断)4.项目中最有挑战性的部分,怎么解决的,然后会深挖这一部分再提问(这个问题出现的根本原因,下次如何避免)5.面试官说我专业其实不是很对口,不是电气工程专业,所以问的比较浅,大家仅供参考9.2收到笔试链接,非笔试,为性格测试9.5收到二面短信9.8 二面,没有技术问题,主要问了在校做过什么项目,调试遇到什么问题,除此之外有没有做过电源相关项...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
1
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
勇气与抉择
2.8W
2
...
2025年12月16日 多年之后 我又梦到那天
1.1W
3
...
单9机械结构硕的求职大结局
5300
4
...
虾皮运维开发 一面凉经
4998
5
...
2025,收获良多的一年
4623
6
...
我从反复确认,走向不再自证
4582
7
...
实习摸鱼被大厂开了
4556
8
...
2025年度总结-成长
4535
9
...
关于双非找实习的一个暴论
4503
10
...
被mt骂了怎么办
4414
创作者周榜
更多
正在热议
更多
#
mt对你说过最有启发的一句话
#
18040次浏览
227人参与
#
工作以后,你父母对你啥态度
#
21733次浏览
160人参与
#
秋招被挂春招仍然能投的公司
#
2937次浏览
44人参与
#
秋招特别不鸣谢
#
7951次浏览
113人参与
#
摸鱼被leader发现了怎么办
#
84495次浏览
556人参与
#
什么是优秀的实习经历
#
4000次浏览
148人参与
#
今年秋招你收到了多少封邮件?
#
11879次浏览
160人参与
#
工作中遇到的歹人
#
16053次浏览
206人参与
#
选实习,你更看重哪方面?
#
6651次浏览
151人参与
#
被上班搭子“传染”了哪些习惯
#
3038次浏览
73人参与
#
2025,我想......
#
79902次浏览
632人参与
#
工作后,你落下了哪些病根
#
7038次浏览
147人参与
#
实习简历求拷打
#
670次浏览
21人参与
#
找工作有哪些冷知识
#
201864次浏览
2578人参与
#
一人一个landing小技巧
#
137823次浏览
1491人参与
#
考研失败就一定是坏事吗?
#
165641次浏览
1213人参与
#
听到哪句话就代表面试稳了or挂了?
#
236756次浏览
1675人参与
#
工作后明白的那些道理
#
41575次浏览
628人参与
#
打工人的精神状态
#
121792次浏览
1416人参与
#
秋招暂停,我将对以下公司做出处罚__
#
45918次浏览
185人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务