【性能类】—页面性能类

news2024/11/23 18:44:38

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

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

加速资源,比如网页上使用了多个css或多个图片,如何让客户最快的把这个资源请求过来,使用CDN,让网络快速到达服务端下载下来,尤其是页面第一次打开的时候,使用CDN效果明显

5. 预解析DNS

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

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

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

相关文章

【JavaWeb】 JavaScript 开发利器之 jQuery

&#x1f384;欢迎来到边境矢梦的csdn博文&#xff0c;本文主要讲解Java 中JavaScript 开发利器之 jQuery的相关知识&#x1f384; &#x1f308;我是边境矢梦&#xff0c;一个正在为秋招和算法竞赛做准备的学生&#x1f308; &#x1f386;喜欢的朋友可以关注一下&#x1faf0…

QT信号与槽的理解

文章目录 信号与槽的理解 信号与槽的理解 信号就是事件&#xff0c;比如button被点击的事件&#xff0c;ComboBox选项改变的事件&#xff0c;都是信号槽就是对信号进行响应的函数&#xff0c;可以是任意自定义函数一个信号可以对应多个槽多个信号可以对应一个槽信号的参数不能…

提升Element UI分页查询用户体验与交互:实现修改未保存提示

我实现的功能是在 element ui 的分页组件中进行分页查询时&#xff0c;如果当前有未保存的修改数据就提示用户&#xff0c;用户可以选择是否放弃未保存的数据。确认放弃就重新查询数据&#xff1b;选择不放弃&#xff0c;不重新查询&#xff0c;并且显示条数选择框保持原样&…

AWS中lambda与DynamoDB的集成

前言&#xff1a;我在整个集成过程中&#xff0c;存在最大的问题有两个&#xff0c; 1. 没有考虑到lambda函数的权限&#xff0c;即对DynamoDB或者其他如Kinesis的权限授权&#xff0c;导致无法写入或者读取。 2.最初使用了异步方式调用&#xff0c;导致无法写数据到DynamoDB…

STM32自带的DSP库的滤波初体验(一)

最近在弄STM32自带的DSP库里的滤波&#xff0c;记录一下&#xff1a; arm_fir_instance_q15 instance_q15_S; #define NUM_TAPS 16 //滤波系数的个数 #define BLOCK_SIZE 32 q15_t firStateF32[BLOCK_SIZE NUM_TAPS]; q15_t Fir_Coeff[NUM_TAPS] {-79, -136, 312, 6…

《合成孔径雷达成像算法与实现》Figure3.1

代码复现如下&#xff1a; clc close all clear all%参数设置 B 5.80e6; %信号带宽 T 7.26e-6; %脉冲持续时间 K B/T; %线性调频频率 alpha 5; %过采样率 F alpha*B; %采样频率 N F*T; %采样点数 dt T/N; …

85. 最大矩形

题目描述 给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵&#xff0c;找出只包含 1 的最大矩形&#xff0c;并返回其面积。 示例 1&#xff1a; 输入&#xff1a;matrix [["1","0","1","0","0"],["1…

Icon图标有哪些在线设计的工具推荐

虽然icon图标相对较小&#xff0c;但icon图标在设计中非常重要。高质量的icon图标通常可以决定设计工作的质量。高质量的在线生产icon工具可以提高设计师图标设计的效率。此外&#xff0c;优秀的图标设计师还可以让设计师快速开始图标设计工作。本文为您选择了五种在线生成icon…

python ffmpeg合并ts文件

当你从网站下载了一集动漫&#xff0c;然后发现是一堆ts文件&#xff0c;虽然可以打开&#xff0c;但是某个都是10秒左右&#xff0c;很不方便。 这时&#xff0c;可以用python合并ts文件。 &#xff08;1&#xff09;安装配置ffmpeg 官网下载ffmpeg-2023-08-07-git-d295b6b…

【工作中问题解决实践 十】一次内存泄露排查-MAT使用指南

最近体验了一把当医生的感觉&#xff0c;定位病根病因&#xff0c;感觉这种要揪出问题的感觉很爽&#xff0c;并不觉得麻烦&#xff0c;这里将整个排查过程记录一下&#xff0c;方便之后再遇到类似问题有应对之道。 问题背景 2023-07-18 早上还在睡梦中的俺被一条条报警消息铛…

CTF流量题解http1.pcapng

使用Wireshark工具打开流量文件http1.pcapng&#xff0c;如下图所示。 在过滤检索栏输入http&#xff0c;wireshark自动进行过滤。

【EI复现】基于阶梯碳交易的含P2G-CCS耦合和燃气掺氢的虚拟电厂优化调度(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

太水了,4年经验还不如一年的,难怪面试过不了

前言 看到朋友圈一个HR发的招聘信息&#xff0c;招聘2名外包测试开发岗位&#xff0c;如果只会pythonpytestrequest这种基础的测开技术&#xff0c;极大概率是过不了面试的。 一方面为她发的信息所惊讶&#xff0c;因为外包的岗位一般在我们看来薪资不高且要求较低&#xff1…

IPC之二:使用命名管道(FIFO)进行进程间通信的例子

IPC 是 Linux 编程中一个重要的概念&#xff0c;IPC 有多种方式&#xff0c;本文主要介绍命名管道(FIFO)&#xff0c;命名管道可以完成同一台计算机上的进程之间的通信&#xff0c;本文给出了多个具体的实例&#xff0c;每个实例均附有完整的源代码&#xff1b;本文所有实例在 …

axios接受文件流并下载

需求场景 前端发送请求&#xff0c;后端传回文件流&#xff0c;前端接受到后立刻打开下载窗口下载文件 注意事项 请求api需要添加&#xff1a;responseType:blob&#xff0c; axios拦截器拦截错误状态码 (假设是code) 那里的if从res.code ! 200改为res.code && res.…

SSD202D-kernel-uimage后面加入dtb

情况是这样的,由于我们这边烧录的是uImage.xz 是经过压缩的uimage文件,涉及到解码,boot获取dtb会需要解码,解码不知为何会延时十几秒等待 这是万万不能的,于是就使用了别的方法就把dtb放到kernel的空间多余的地方,这样只要能读到即可 于是我开始了设计方法 可以看到这个dtb的…

以mod_jk方式整合apache与tomcat(动静分离)

前言&#xff1a; 为什么要整合apache和tomcat apache对静态页面的处理能力强&#xff0c;而tomcat对静态页面的处理不如apache&#xff0c;整合后有以下好处 提升对静态文件的处理性能 利用 Web 服务器来做负载均衡以及容错 更完善地去升级应用程序 jk整合方式介绍&#…

Sqlserver还原数据库为另外的名字

Sqlserver还原数据库为另外的名字 在工作中需要还原数据库的时候原来的数据库不变&#xff0c;而是需要还原成一个新的数据库 1、备份test数据库 2、新建一个test1数据库 3、设置test1数据库文件的权限 右键这两个文件->属性 4、在test1上还原数据库 5、数据库还原配置…

比特鹏哥5-数组【自用笔记】

比特鹏哥5-数组【自用笔记】 1.数组的概念2.一维数组的创建和初始化创建的语句结构初始化的语句结构 3.一维数组的使用数组的下标&#xff1a;从0开始&#xff0c;n个数组&#xff0c;最后一个的下标是n-1 4.一维数组在内存中的存储5.sizeof计算数组元素个数可以计算元素个数并…

守住L2?争夺高阶智驾?留给外资Tier1的时间不多了!

14.08%&#xff0c;这是2023年1-6月中国市场&#xff08;不含进出口&#xff09;乘用车前装标配L2&#xff08;含L2&#xff09;搭载中国本土系统解决方案的份额占比。而在NOA等高阶赛道&#xff0c;中国本土势力已经占据上风。 这个过去一直被外资Tier1垄断的智能化细分市场&a…