0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于浏览器缓存最详细解析

jf_f8pIz0xS 来源:掘金 作者:foolBird 2021-04-16 16:01 次阅读

简述

浏览器缓存即 http 缓存,将请求过的数据(html、css、js)存在浏览器(本地磁盘)中,当再次访问这些资源时可以从本地直接加载,减少服务端请求

服务端通过设置 http 响应头来决定缓存策略(缓存方式)

缓存流程

第一次请求需要的资源,服务器返回资源的同时在 response hearder 响应头中添加了缓存策略,告诉浏览器缓存规则(比如以何种方式缓存,缓存信息。。.。。.),此时就进行缓存了

第二次如果是请求相同资源,那么就会检查缓存里面是否有相应资源,有的话直接取用,具体方式请看后续

缓存位置

先谈谈缓存都会存在哪,然后引出缓存方式进一步说明

Service Worker

可以让我们自由控制缓存哪些文件、如何匹配/读取缓存,并且缓存是持续性的

离线缓存调用的就是 Service Worker

Memory Cache

内存中的缓存,关闭页面就会失效

Disk Cache

硬盘中的缓存

资源存进硬盘的情况

大文件(大概率)

此时内存利用率较高

Push Cache

推送缓存:以上三种缓存都没命中时,才启用

它只在会话(Session)中存在,会话结束就会释放,缓存时间很短

如果以上四种缓存都没被命中,就只能发起请求了。所以为了性能考虑,选择好缓存方式极为重要

缓存方式

缓存方式就两种

强缓存(默认优先)

协商缓存(协商,也就是商量的意思)

先介绍一个响应头中重要的值 Cache-Control,用于控制网页缓存,有如下主要取值

public:响应可以被客户端和代理服务器缓存

private(默认取值):响应只有客户端可以缓存

no-cache:直接进入协商缓存阶段

no-store:不进行任何缓存

max-age = xxx(xxx 代表数字):缓存内容在 xxx 时间后失效

must-revalidate:告诉浏览器

浏览器查看响应头的方法(新版 edge 为例):右键选择 “检查”,进入开发者模式,选择 “网络” ,选中具体选项(如果没有可以 f5 刷新页面),点击 “标头”

强缓存

概念:检查强缓存,不发送 http 请求直接从缓存里读取资源。一般强缓存都会设置有效时间,过期就失效

触发条件,Cache-Control 的值 max-age = xxx

响应头 Expires 存储缓存过期时间(如果修改本地时间会造成缓存失效)

协商缓存

概念:需要携带缓存标识(tag)发送 http 请求,由服务器判断是否使用缓存。服务端会进行判断,若资源已发生变化,则返回新资源,否则告诉浏览器启用缓存即可

触发条件(两个)

强缓存过期

Cache-Control 的值包含 no-cache

缓存标识由响应头 Last-Modified、ETag 决定(简述一下)AX

Last-Modified 用于记录资源最后修改时间,浏览器再次请求时用来对比时间,以此判断资源是否变化

ETag存储一个字符串(类似标识符),只要资源修改了标识符就会变动,以此判断资源是否变化

用户操作对缓存的影响

地址栏输入网址:浏览器会查找

点击刷新按钮或按 f5 刷新:会使用缓存

ctrl+f5 刷新:跳过缓存,直接请求新资源
编辑:lyn

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 缓存
    +关注

    关注

    1

    文章

    220

    浏览量

    26437
  • 浏览器
    +关注

    关注

    1

    文章

    974

    浏览量

    34403
收藏 人收藏

    评论

    相关推荐

    安卓版Chrome浏览器现已支持第三方密码管理器调用

    据报道,数据解析专家Leppeva64近日在安卓版谷歌Chrome浏览器的源代码中透露,该浏览器已在安卓平台上实现了对第三方密码管理器的调用支持,并覆盖Stable、Beta及Canary版本。
    的头像 发表于 03-19 11:04 238次阅读

    浏览器原理解析Chrome常见插件的实现思路

    近期Chrome进程架构 从图中可以看出,最新的 Chrome 浏览器包括:1 个浏览器主进程、1 个 GPU 进程、1 个网络进程、多个渲染进程和多个插件进程。
    的头像 发表于 12-08 14:25 320次阅读
    从<b class='flag-5'>浏览器</b>原理<b class='flag-5'>解析</b>Chrome常见插件的实现思路

    js脚本怎么在浏览器中运行

    浏览器中运行JavaScript脚本是一种常见的方式,因为JavaScript是一种在Web浏览器中执行的脚本语言。下面是一个详细的,最少1500字的文章,介绍如何在浏览器中运行
    的头像 发表于 11-27 16:46 1393次阅读

    js文件可以直接浏览器运行吗

    载和运行。 在Web开发中,JS常被用于实现动态交互效果和页面逻辑控制。通过将JS代码嵌入到网页的HTML文件中,浏览器可以在页面加载过程中自动执行JS,实现网页的动态效果和用户交互。 在HTML文件中,可以使用 当浏览器解析
    的头像 发表于 11-27 16:45 1520次阅读

    浏览器怎么打开javascript

    浏览器是一种用于浏览和访问互联网页面的应用程序,而JavaScript是一种常用的网页编程语言,用于给网页添加交互和动态效果。本文将详细探讨如何在浏览器中打开JavaScript,并解
    的头像 发表于 11-26 11:25 964次阅读

    浏览器需要支持javascript怎么解决

    JavaScript是一种流行的脚本语言,用于对网页进行动态交互和功能增强。几乎所有现代浏览器都支持JavaScript,但在某些情况下,用户可能需要采取措施来确保浏览器支持JavaScript
    的头像 发表于 11-26 11:23 2102次阅读

    浏览器支持javascript怎么设置

    和JavaScript之间的关系。浏览器是一个软件应用程序,用于解析和渲染网页。它可以是桌面应用程序(例如Chrome,Firefox和Safari)或移动应用程序(例如Safari和Chrome
    的头像 发表于 11-26 11:22 767次阅读

    浏览器javascript被禁用怎么解开

    。本文将详细介绍如何解开禁用浏览器JavaScript的方法,希望对您有所帮助。 一、检查浏览器设置 在解决问题之前,我们首先要确认JavaScript是否真的被禁用了。不同的浏览器
    的头像 发表于 11-26 11:21 8439次阅读

    ie浏览器限制运行脚本

    的安全。在本文中,我将详细介绍IE浏览器限制运行脚本的各个方面和原因。 首先,IE浏览器限制运行脚本的一个主要原因是为了防止跨站脚本攻击(Cross-Site Scripting,XSS)。XSS攻击是指攻击者在一个网站上注入恶
    的头像 发表于 11-26 11:19 726次阅读

    python控制已经打开的浏览器

    Python是一种广泛使用的编程语言,它具有强大的功能和丰富的库。其中一个功能就是控制已经打开的浏览器。这篇文章将详细介绍如何使用Python控制已经打开的浏览器,并提供一些实际的示例
    的头像 发表于 11-22 14:29 1430次阅读

    基于WAP的嵌入式浏览器设计

    电子发烧友网站提供《基于WAP的嵌入式浏览器设计.pdf》资料免费下载
    发表于 10-24 11:33 0次下载
    基于WAP的嵌入式<b class='flag-5'>浏览器</b>设计

    PCIe 浏览器用户手册

    PCIe 浏览器用户手册
    发表于 06-27 20:21 0次下载
    PCIe <b class='flag-5'>浏览器</b>用户手册

    暴力猴浏览器插件

    暴力猴浏览器插件
    发表于 05-29 11:20 4次下载

    PCIe 浏览器用户手册

    PCIe 浏览器用户手册
    发表于 05-09 19:00 0次下载
    PCIe <b class='flag-5'>浏览器</b>用户手册

    imx8mp chromium浏览器显示异常怎么解决?

    我用imx8mp连接两个屏幕,显示不同。一个是lvds接口的屏,分辨率是1366*768,一个是HDMI显示。如果你在HDMI屏幕上打开chromium浏览器到最大,浏览器屏幕也会显示在另一个屏幕上。
    发表于 05-06 07:21