前端文件优化

devtools/2024/11/16 22:18:44/

一、图片优化

计算图片大小

对于一张100*100像素的图片来说,图像上有 10000 个像素点,如果每个像素的值是 RGBA 存储的话,那么也就是说每个像素有 4 个通道,每个通道 1 个字节(8 位 = 1个字 节),所以该图⽚⼤小⼤概为 39KB(10000 * 1 * 4 / 1024)。

但是在实际项⽬中,⼀张图片可能并不需要使⽤那么多颜色去显示,我们可以通过减少每个像素的调色板来相应缩小图⽚的⼤小。

优化图片思路

  • 减少像素点
  • 减少像素的能够显示的颜色

二、图片加载优化

  1. 不⽤图⽚。很多时候会使⽤到很多修饰类,其实这类修饰图⽚完全可以⽤ CSS 去代替。
  2. 对于移动端来说,屏幕宽度就那么点,完全没有必要去加载原图浪费带宽。⼀般图⽚都⽤ CDN 加载,可以计算出适配屏幕的宽度,然后去请求相应裁剪好的图⽚。
  3. ⼩图使⽤ base64 格式
  4. 将多个图标⽂件整合到⼀张图⽚中(雪碧图)
  5. 选择正确的图片格式:

  •    对于能够显示 WebP 格式的浏览器尽量使⽤ WebP 格式。因为 WebP 格式具有更好 的图像数据压缩算法,能带来更⼩的图⽚体积,⽽且拥有⾁眼识别⽆差异的图像质 量,缺点就是兼容性并不好
  • ⼩图使⽤ PNG,其实对于⼤部分图标这类图⽚,完全可以使⽤ SVG 代替
  • 照⽚使⽤ JPEG

三、其他文件优化

  • CSS ⽂件放在 head 中
  • 服务端开启⽂件压缩功能
  • 将 script 标签放在 body 底部,因为 JS ⽂件执⾏会阻塞渲染。当然也可以把 script 标签放在任意位置然后加上 defer ,表示该⽂件会并⾏下载,但是会放到 HTML 解析完成后顺序执⾏。对于没有任何依赖的 JS ⽂件可以加上 async ,表示加载 和渲染后续⽂档元素的过程将和 JS ⽂件的加载与执⾏并⾏⽆序进⾏。
  • 执⾏ JS 代码过⻓会卡住渲染,对于需要很多时间计算的代码可以考虑使⽤ Webworker 。 Webworker 可以让我们另开⼀个线程执⾏脚本⽽不影响渲染。

四、CDN

静态资源尽量使⽤ CDN 加载,由于浏览器对于单个域名有并发请求上限,可以考虑使⽤多个 CDN 域名。对于 CDN 加载静态资源需要注意 CDN 域名要与主站不同,否则每次请求都会带上主站的 Cookie。


http://www.ppmy.cn/devtools/134541.html

相关文章

Android 删除设置的WLAN偏好选项菜单,即设置不可见

vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/network/NetworkProviderSettings.java preference页面设置不可见 【出现在搜索框里面】【不可以注释network_provider_settings】 private void addPreferences() { addPreferences…

聊聊Flink:Flink的分区机制

一、前言 flink任务在执行过程中,一个流(stream)包含一个或多个分区(Stream partition)。TaskManager中的一个slot的subtask就是一个stream partition(流分区),一个Job的流&#xf…

设备接入到NVR管理平台EasyNVR多品牌NVR管理工具/设备的音视频配置参考

NVR管理平台EasyNVR是一款功能强大的安防视频监控平台,能够轻松实现视频流的导入、录像、存储和回放等功能。在将设备接入到海康NVR管理平台EasyNVR时,视音频配置是确保视频监控效果的重要步骤。本文将详细介绍如何将设备接入到EasyNVR平台,并…

11.11机器学习_介绍和定义

一、 机器学习介绍与定义 1. 机器学习定义 机器学习(Machine Learning)本质上就是让计算机自己在数据中学习规律,并根据所得到的规律对未来数据进行预测。 机器学习包括如聚类、分类、决策树、贝叶斯、神经网络、深度学习(Deep…

探索 HTML 和 CSS 实现的蜡烛火焰

效果演示 这段代码是一个模拟蜡烛火焰的HTML和CSS代码。它创建了一个具有动态效果的蜡烛火焰动画&#xff0c;包括火焰的摆动、伸缩和光晕的闪烁。 HTML <div class"holder"><div class"candle"><div class"blinking-glow"&g…

NPOI 实现Excel模板导出

记录一下使用NPOI实现定制的Excel导出模板&#xff0c;已下实现需求及主要逻辑 所需Json数据 对应参数 List<PurQuoteExportDataCrInput> listData [{"ItemName": "电缆VV3*162*10","Spec": "电缆VV3*162*10","Uom":…

《硬件架构的艺术》笔记(二):时钟与复位

本章主要针对ASIC设计给出建议&#xff0c;独立于CAD工具以及工艺&#xff0c;主要针对模块设计和存储器接口。 同步设计 这是对时钟域控制最安全的方法&#xff0c;单个主时钟和单个主置位/复位信号驱动设计中所有时序器件。 避免使用行波计数器 行波计数器&#xff1a;用触…

LeetCode 491-非递减子序列

题目链接&#xff1a;LeetCod491 欢迎留言交流&#xff0c;每天都会回消息。 class Solution {//最终返回结果List<List<Integer>> rs new ArrayList<>();//递归路径中的值LinkedList<Integer> path new LinkedList<>();public List<List…