【性能类】—页面性能类

一、提升页面性能的方法有哪些?

1. 资源压缩合并,减少HTTP请求

  1. 图片、视频、js、css等资源压缩合并,开启HTTP压缩,把资源文件变小

2. 非核心代码异步加载 →异步加载的方式 → 异步加载的区别

  1. 异步加载的方式
    ① 动态脚本加载
    使用document.createElement(‘script’),创建script标签,最后把这个标签加载页面上
    ②defer
    defer作用是文档加载完毕了再执行脚本,这样回避免找不到对象的问题
<script defer> 
function document.body.onload() { alert(document.body.offsetHeight); 
} 
</script>

③async
2. 异步加载的区别
① defer是在HTML解析完之后才会执行,如果是多个,按照加载的顺序依次执行

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><script src="./defer1.js" defer></script><title>Document</title>
</head>
<body>
<script>console.log('write')
</script>
<script type="text/javascript">for(var i =0; i <20000; i++) {if (i % 2000 === 0) {console.log(i)}}
</script>
</body>
</html>

在这里插入图片描述

②async是在加载完之后立即执行,如果是多个,执行顺序和加载顺序无关

3. 利用浏览器缓存 →缓存的分类 → 缓存的原理

  1. 缓存的原理
    是指资源文件再浏览器中备份,比如请求服务端一个图片,然后把图片缓存到了本地,浏览器下次请求时,直接在电脑磁盘中读取,无需再次请求
  2. 缓存的分类
    1-1 强缓存: 不会向服务器发送请求,直接从缓存中读取资源
    Expires 过期时间(服务器的绝对时间)
// 拿客户端的本地时间与服务器的时间进行比较,如果小于服务器时间,直接取缓存;缺点本地时间可以与服务器时间不一致,原因是本地时间可以修改
Expires: Thu,21 Jan 2017 23:39:02 GMT

Cache-Control 过期时间(相对时间)

// 客户端的相对时间,3600秒之内,我不会请求服务器,直接在浏览器取缓存Cache-Control:max-age = 3600

PS:当这两个时间都下发了, 以Cache-Control 相对时间为准

1-2 协商缓存:向服务器发送请求,服务器会告诉你是否使用缓存
Last-Modified 上次修改的时间
If-Modified-Since 上次修改的时间
Last-Modified 是由服务器发送给客户端的HTTP请求头标签
If-Modified-Since 则是由客户端发送给服务器的HTTP请求头标签
Etag 哈希值
If-None-Match

详细解析文章

4. 使用CDN ☆

CDN: 内容分发网络,把主体网站的资源(静态资源:js、css、图片、视频等)分发到各个CDN服务商,根据用户所在区域从最近的CDN服务商获取资源。
例子: 某个广州的用户打开了淘宝页面,杭州服务器就根据区域,重定向到广州CDN服务商获取页面资源,节约了用户打开页面的时间,提升了用户体验,尤其是页面第一次打开的时候,使用CDN效果明显
作用:减少路由次数,提升下载速度,缩短传输时间,提升用户使用体验

5. DNS预解析

DNS:域名系统,每一个域名都对应一个唯一的IP地址,DNS 就是管理域名和IP地址映射关系的分布式数据库
通过域名查找到对应的IP地址的过程叫作域名解析
DNS预解析:是浏览器试图在用户访问链接之前解析域名,减少用户点击当链接的相应时间
例子:当我们打开淘宝网时,把所有的a标签跳转的链接抓取出来,提前做这些链接的域名解析,当用户点击这些链接时,响应就很快。
参考文章

// http开头的页面,默认打开A标签的预解析;
// 如果页面是https开头的,默认关闭A标签的预解析, "x-dns-prefetch-control" 强制打开A标签的预解析
<meta http-equive="x-dns-prefetch-control" content="on">
// dns-prefetch 指定特定域名进行预读取
<link rel="dns-prefetch" href="//host_name_to_prefetch.com">

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

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

相关文章

【OpenCV常用函数:视频捕获函数】cv2.VideoCapture

文章目录 1、cv2.VideoCapture() 1、cv2.VideoCapture() 输入视频路径&#xff0c;创建VideoCapture的对象 cv2.VideoCapture(filename) filename: 视频文件的路径视频名扩展名该类的函数有&#xff1a; 1&#xff09;video.isOpened: 检查视频捕获是否成功 2&#xff09;vid…

重试框架入门:Spring-RetryGuava-Retry

前言 在日常工作中&#xff0c;随着业务日渐庞大&#xff0c;不可避免的涉及到调用远程服务&#xff0c;但是远程服务的健壮性和网络稳定性都是不可控因素&#xff0c;因此&#xff0c;我们需要考虑合适的重试机制去处理这些问题&#xff0c;最基础的方式就是手动重试&#xf…

YOLOv5源码中的参数超详细解析(2)— 配置文件yolov5s.yaml

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。YOLOv5配置了5种不同大小的网络模型&#xff0c;分别是YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x&#xff0c;其中YOLOv5n是网络深度和宽度最小但检测速度最快的模型&#xff0c;其他4种模型都是在YOLOv5n的基础上不断…

BEV3D检测模型

Fast-BEV: A Fast and Strong Bird‘s-Eye View Perception Baseline 目录 Fast-BEV: A Fast and Strong Bird‘s-Eye View Perception Baseline 近年来&#xff0c;基于鸟瞰图&#xff08;BEV&#xff09;表示的感知任务越来越受到关注&#xff0c;BEV表示作为下一代自动驾…

常见Git命令

Git常见命令 1. 添加单个文件 git add a.txt2. 添加多个文件 git add a.txt b.txt c.txt3. 添加(commit)修改&#xff0c;此时修改还未push到服务器上 git commit -m "修改了a.txt内容"4. 提交(push)修改&#xff0c;此时修改会同步到服务器上 git push5. 查看当…

《Python入门到精通》os模块详解,Python os标准库

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;小白零基础《Python入门到精通》 os模块详解 1、文件目录操作os.stat() 获取文件状态os.utime() 修改文件时间os.r…

IPC之三:使用 System V 消息队列进行进程间通信的实例

IPC 是 Linux 编程中一个重要的概念&#xff0c;IPC 有多种方式&#xff0c;本文主要介绍消息队列(Message Queues)&#xff0c;消息队列可以完成同一台计算机上的进程之间的通信&#xff0c;相比较管道&#xff0c;消息队列要复杂一些&#xff0c;但使用起来更加灵活和方便&am…

FFmpeg中AVIOContext的使用

通过FFmpeg对视频进行编解码时&#xff0c;如果输入文件存在本机或通过USB摄像头、笔记本内置摄像头获取数据时&#xff0c;可通过avformat_open_input接口中的第二个参数直接指定即可。但如果待处理的视频数据存在于内存块中时&#xff0c;该如何指定&#xff0c;可通过FFmpeg…

用MiCoNE工具对16S序列数据进行共现网络分析

谷禾健康 微生物群通常由数百个物种组成的群落&#xff0c;这些物种之间存在复杂的相互作用。绘制微生物群落中不同物种之间的相互关系&#xff0c;对于理解和控制其结构和功能非常重要。 微生物群高通量测序的激增导致创建了数千个包含微生物丰度信息的数据集。这些丰度可以转…

python去掉列表数据中的最大最小值

python去掉列表数据中的最大最小值 有一个列表数据为: data = [1,29,3,3,4,5,1,3,4,5,6,7,80,9,9,9,4]现在需要去掉列表中的最大值、最小值。 步骤如下: 1、先获取最大值 max_value = max(data)2、然后获取最小值 min_value = min(data)3、使用filter进行过滤,满足条件的…

Nginx开启gzip网页传输压缩配置

场景 Nginx 服务器为网页压缩专门提供了 gz 模块&#xff0c;并且模块中的相关指令均可以设置在http、server或location块中&#xff0c; 实现服务器端按照指定的设置进行压缩。 CentOS7中解压tar包的方式安装Nginx&#xff1a; CentOS7中解压tar包的方式安装Nginx_centos7…

Dockerfile构建Redis镜像(yum方式)

目录 Dockerfile构建Redis镜像 1、建立工作目录 2、编写Dockerfile文件 3、构建镜像 4、测试容器 Dockerfile构建Redis镜像 1、建立工作目录 [roothuyang1 ~]# mkdir redis [roothuyang1 ~]# cd redis/ 2、编写Dockerfile文件 [roothuyang1 redis]# vim Dockerfile 配置如…

手搓vue3组件_1.封装一个button

我的icepro参考地址,内有参考代码,有条件的割割点点star 实现要求: 基于vue3支持通过colors(更改颜色)支持点击事件…支持其他的自定义样式(例如圆角,size等等) 最基础的第一步: 父组件引入并使用: <template><div class"buttonLim">我的按钮:<ice-b…

Java课题笔记~ 关于错误与异常

非检查异常(unckecked exception)&#xff1a;Error 和 RuntimeException 以及他们的子类。javac在编译时&#xff0c;不会提示和发现这样的异常&#xff0c;不要求程序员必须处理这些异常。在运行阶段&#xff0c;倘若发生Error则虚拟机几乎崩溃&#xff0c;倘若发生RuntimeEx…

Django快速入门

文章目录 一、安装1.创建虚拟环境&#xff08;virtualenv和virtualenvwrapper&#xff09;2. 安装django 二、改解释器三、创建一个Django项目四、项目目录项目同名文件夹/settings.py 五、测试服务器启动六、数据迁移七、创建应用八、基本视图1. 返回响应 response2. 渲染模板…

Go实现mongodb增删改查的工具类

文章目录 1、驱动下载2、实现代码2.1 Mongodb工具类代码2.2 使用例子2.3 运行效果 1、驱动下载 mongodb官方go介绍 使用例子https://www.mongodb.com/docs/drivers/go/current/fundamentals/connection/#connection-example 快速入门https://www.mongodb.com/docs/drivers/go/…

git和github学习

一、什么是git和github? 二、学会使用github desktop应用程序 初始使用&#xff1a; 一开始我们是新账户&#xff0c;里面是没有仓库的&#xff0c;需要手动创建一个仓库。此时&#xff0c;这个仓库是创建在本地仓库里面&#xff0c;需要用到push命令&#xff08;就是那个pub…

Vantage透明屏的工作原理是什么?应用、展示、显示

Vantage透明屏是一种新型的显示技术&#xff0c;它能够将图像和视频直接投影到透明的屏幕上&#xff0c;使得观众可以同时看到屏幕上的内容和背后的实物。 这种技术在广告、展览、零售和娱乐等领域有着广泛的应用前景。 Vantage透明屏的工作原理是利用透明的显示面板和背后的…

第21题-巨大的数:给你n个数 ai,求这n个数相乘之后的积的个位数字是多少,0 < n,ai <= 100...

问题 : 巨大的数 时间限制: 1Sec 内存限制: 128MB 题目描述 给你n个数 ai&#xff0c;求这n个数相乘之后的积的个位数字是多少&#xff0c;0 < n,ai < 100 输入 共两行&#xff0c;第一行为n的值&#xff0c;表示有多少个数&#xff0c;第二行为由空格隔开的n个数 …

源码解析Flink源节点数据读取是如何与checkpoint串行执行

文章目录 源码解析Flink源节点数据读取是如何与checkpoint串行执行Checkpoint阶段StreamTask类变量actionExecutor的实现和初始化小结 数据读取阶段小结 总结 源码解析Flink源节点数据读取是如何与checkpoint串行执行 Flink版本&#xff1a;1.13.6 前置知识&#xff1a;源节点…