浏览器缓存

        浏览器的缓存是性能优化中最高效的方法看,他可以显著减少网络传输带来的损耗。

        浏览器缓存可以帮助以下两种情况下进行优化:

  1. 发起请求:使用缓存不发起的请求
  2. 浏览器响应:后端与前端数据是一致的,那么没有必要再将数据传回来

        那么对于缓存,我们有下面几个问题要考虑:

  1. 缓存位置
  2. 缓存策略
  3. 实际场景应用
   1、缓存位置

        有四种缓存的位置,并且有各自的优先级,只有当依次没有命中的时候才会进行网络请求。

  1. service worker:他可以让我们自由控制缓存哪些文件、如何匹配缓存、并且持续缓存的。
  2. memory cache:内存中的缓存,内存中的数据肯定比磁盘快。但是,缓存持续性会很短,会随着进程的释放而释放,一旦关闭Tab页面,内存只能够的缓存就被释放了。
  3. disk cache:硬盘中的缓存,读取速到慢点,但是相对于内存缓存容量和存储时效上较好。所有的缓存中disk cache覆盖面最大,会根据HTTP Header中的字段判断哪些资源需要缓存,或者已经过期,跨站点的情况下,相同地址的资源一旦被硬盘缓存下来,就不会再次去请求数据。                                            
  4. push cache:是HTTP/2中的内容,以上三种缓存没有命中,它才会被使用,并且缓存时间也很短暂,只在session中存在。一旦回话结束就会被释放。
  5. 网络请求:所有缓存没有命中,就会发起请求来获取资源了
2、缓存策略

        缓存策略分成强缓存和协商缓存两种,并且通过设置HTTP Header来实现的。

  1. 强缓存:HTTP Header:Expires、Cache-Control(优先级高于expires)表示缓存期间不需要请求,state code为200。
  2.  协商缓存:HTTP Header:Last-Modified、Etag(优先级高于Last-Modified)如果资源没有做改变,那么服务端就会返回304状态码,并且更新浏览器缓存有效期。

下面是cache-control的一些常见的指令:

3、实际场景应用缓存策略
  • 频繁变动的资源:Cache-Control:no-cache

指先要和服务器确认是否有资源更新。也就是没有强缓存,而是会有协商缓存。

然后配合协商缓存的Last-Modified、Etag(优先级高于Last-Modified)来验证是否有效。

  • 代码文件 :HTML以外的代码文件,HTML文件一般不缓存或者缓存时间短。

一般来说。现在都会使用工具来打包代码,那么对于文件进行哈希处理,只有当代码修改后才会生成新的文件名。因此我们可以设置缓存时间为一年有效期Cache-Control: max-age=31536000。只有当文件名改变才去下载新的代码文件,否则一直缓存。

参考:

前端进阶之旅

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/163727.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络安全内网渗透之信息收集--systeminfo查看电脑有无加域

systeminfo输出的内容很多,包括主机名、OS名称、OS版本、域信息、打的补丁程序等。 其中,查看电脑有无加域可以快速搜索: systeminfo|findstr "域:" 输出结果为WORKGROUP,可见该机器没有加域: systeminfo…

Docker 安装zookeeper

一、安装单机版 1、拉取镜像 docker pull zookeeper2、创建挂载目录 mkdir -p /mydata/zookeeper/{conf,data,logs}3、新建配置文件 cd /mydata/zookeeper/conf vi zoo.cfgdataDir/data dataLogDir/logs tickTime2000 initLimit10 syncLimit5 clientPort21814、单机主机启…

elasticsearch常用命令

Elasticsearch概念 ElasticsearchmysqlIndex(索引)数据库Type(类型)表Documents(文档)行Fields列 常用命令 索引 # 索引初始化,number_of_shards:分片数,不可修改;number_of_replicas:副本数,可修改 PUT lagou {"settings…

基于深度学习的目标检测模型综述

基于深度学习的目标检测模型综述 一 概论目标检测主要挑战评估指标 二 展望 一 概论 目标检测是目标分类的自然延伸,目标分类仅旨在识别图像中的目标。目标检测的目标是检测预定义类的所有实例并通过轴对齐的框提供其在图像中的初略定位。检测器应能够识别所有目标…

jmeter监听每秒点击数(Hits per Second)

jmeter监听每秒点击数(Hits per Second) 下载插件添加监听器执行压测,监听结果 下载插件 点击选项,点击Plugins Manager (has upgrades),点击Available Plugins,搜索5 Additional Graphs安装。 添加监听…

什么是热阻?

电流流过导体时,在导体两端会产生电压差,这个电压差除以流过导体的电流就是这个导体的电阻,单位是欧姆。这就是欧姆定律,大家都知道的东西。 当热源的热量在物体中传递时,在物体上也会产生温度差,这个温度差…

通过SVN拉取项目 步骤

方法一:文件夹方式 首先新建一个空的文件夹,例如,名为“demo”的空文件夹 在这个空的文件夹中鼠标右键,点击SVN Checkout 会出现下图所示的页面,第一个输入框是svn的项目地址,第二个输入框是拉取项目所放的…

安防监控系统EasyCVR视频汇聚平台设备树收藏按钮的细节优化

视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,在视频监控播放上,TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放,可同时播放多路视频流&#…

Java学习

目录 一、变量 二、运算 三、判断和循环语句 四、数组 五、方法 六、类 七、字符串 八、static 九、继承 十、多态 十一、包 十二、final 十三、抽象类 十四、接口 十五、嵌套类 一、变量 1、byte范围【-128,127】 2、long变量后面要写l,float变量…

单链表算法经典OJ题

目录 1、移除链表元素 2、翻转链表 3、合并两个有序链表 4、获取链表的中间结点 5、环形链表解决约瑟夫问题 6、分割链表 1、移除链表元素 203. 移除链表元素 - 力扣(LeetCode) typedef struct ListNode LSNode; struct ListNode* remove…

C#冒泡排序算法

冒泡排序实现原理 冒泡排序是一种简单的排序算法,其原理如下: 从待排序的数组的第一个元素开始,依次比较相邻的两个元素。 如果前面的元素大于后面的元素(升序排序),则交换这两个元素的位置,使…

2023前端面试题总结

给大家推荐一个实用面试题库 1、前端面试题库 (面试必备) 推荐:★★★★★ 地址:web前端面试题库 Html5和CSS3 常见的水平垂直居中实现方案 最简单的方案当然是flex布局 .father {display: flex;justify-content…

Unity Animation--动画剪辑(动画游戏对象)

保存新的动画剪辑后,就可以开始添加关键帧了。 可以使用两种不同的方法为GameObject设置动画。 Unity“动画”窗口:“记录模式”和“预览模式”。 记录模式下的动画窗口 在记录模式下,当您移动,旋转或以其他方式修改动画GameOb…

nginx tomcat 动静分离

动静分离: 访问静态和动态页面分开 实现动态和静态页面负载均衡。 五台虚拟机 实验1,动静分离 思路: 需要设备:三台虚拟机 一台nginx 代理又是静态 两台tomcat 请求动态页面 在全局模块中配置upstream tomcat 新建location…

全面的Docker快速入门教程

前言: 都2023年了,你还在为了安装一个开发或者部署环境、软件而花费半天的时间吗?你还在解决开发环境能够正常访问,而发布正式环境无法正常访问的问题吗?你还在为持续集成和持续交付(CI / CD)工…

Linux安装MINIO

MINIO简介MINIO目录 mkdir -p /opt/minio/data && cd /opt/minio MINIO下载 wget https://dl.minio.org.cn/server/minio/release/linux-amd64/minio MINIO授权 chmod x minio MINIO端口 firewall-cmd --zonepublic --add-port7171/tcp --permanent && firewal…

ios safari 正则兼容问题

背景: 系统是自己开发的采购管理系统; 最近升级系统之后客户反馈部分苹果手机现在在进入单据界面的时候报错, 内容显示不全; 安卓手机正常; 苹果首页是之前有使用过系统的才不行, 如果是之前没有使用过系统, 现在也是可以; 也尝试清理过缓存,更换浏览器都也是不行; 也更…

分类预测 | MATLAB实现WOA-LSTM鲸鱼算法优化长短期记忆网络数据分类预测

分类预测 | MATLAB实现WOA-LSTM鲸鱼算法优化长短期记忆网络数据分类预测 目录 分类预测 | MATLAB实现WOA-LSTM鲸鱼算法优化长短期记忆网络数据分类预测分类效果基本描述模型描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现WOA-LSTM鲸鱼算法优化长短期记忆网络数据分类预测…

想找就能找!如何找回iPhone中被隐藏或主屏幕上被删除的应用程序

本文介绍了如何取消隐藏你在iPhone上隐藏的应用程序,以及如何检索你从iPhone中删除的应用程序。 如何取消隐藏隐藏的应用程序 你过去可能在iPhone上隐藏了应用程序,因为你不经常使用它们,或者你只是喜欢几个整洁的主屏幕。如果你决定将隐藏…

uni-app checkout(多选)radio(单选)选中之后样式不会出现钩子

前言 最近在实际开发过程中发现项目的多选和单选选中之后都是只有颜色,没有钩子,或者是另外图案 刚开始并不重视,猜测可能是微信基础库的bug,可能换个基础库就行了,或者是编辑器显示问题 最后在查阅之后才发现&#…