web 性能提升(将持续更新……)

本文涉及的产品
.cn 域名,1个 12个月
简介: web 性能提升(将持续更新……)

尽量减少文档大小

  • 不添加不必要的容器

使用时加载

  • 图片懒加载
    https://blog.csdn.net/weixin_41192489/article/details/126263221
  • 视频先用一张带播放按钮的图片显示,待点击播放时,才加载视频

不使用图片

img 标签或 background-image 样式通过路径/网址来引用图片时,都会产生 http 请求,用以下不使用图片的方案,便能通过减少http请求来提升页面渲染性能。

方案1. 将图片转换为Base64编码的数据

适用场景:单次使用的小图片

很多网站都提供了转换功能,如:

http://tu.chacuo.net/imagetodataurl/

上传图片后,复制图片的 URL 数据作为 img 标签的 src 值即可。

<img src="data:image……省略具体图片的URL代码……" alt="">

缺点:

  1. 浏览器无法再缓存图片(当需要在页面中多次引用同一张图片时,不得不在多处粘贴代码并且占用传输带宽),同时增大了样式文件体积。
  2. 移动设备上将Base64编码转化为图片物料也是需要设备的计算成本的,需要“加载”时间。

方案2. 使用CSS绘图

https://blog.csdn.net/weixin_41192489/article/details/126133834

较少 HTTP 请求

将请求进行合并,减少请求数量

http请求耗时的地方有:域名跳转、DNS查找、TCP链接初始化、从缓存中查询等

  • 来自10个不同域名的请求所花费的时间多于来自5个不同域名请求所花费的时间
  • 自5个不同域名请求所花费的时间又多于来自5个相同域名的请求所花费的时间
  • 来自5个相同域名请求所花费的时间多余来自单个(将5个请求图片合并为一个图片)文件所需要花费的时间

减少传输代价的常见技术手段有:

  • 使用CDN
  • 利用浏览器缓存
  • 使用CSS精灵(CSSSprites)
  • 使用Gzip压缩
  • 使用图标字体减少实体图片的请求数
  • 使用数据URI替代图片
    ……

你不知道的性能消耗

隐藏图片的加载

<div id="test">  
<img src="images/test.png" alt="" />  
</div>  

@media all and (max-width: 600px) {  
    #test {   
        display:none;   
    }  
}

页面的宽度不足600px时。虽然图片元素随父容器#test被隐藏而不可见,但实际上图片请求仍然被发出。

更快的样式选择器

getElementsByClassName的OPS更高(几乎是querySelectorAll的800倍),效率更好。

使用类名进行选择时,请优先使用 getElementsByClassName

let elements = Array.prototype.slice.call(  
    document.getElementsByClassName  
    ? document.getElementsByClassName(lazyElementClassName)  
    : document.querySelectorAll('.' + lazyElementClassName)  
);

此处为兼容性写法:IE8不支持document.getElementsByClassName,所有的浏览器都支持document.querySelectorAll

使用 requestAnimationFrame 提升 web 性能

https://blog.csdn.net/weixin_41192489/article/details/126247756

能使用CSS实现的功能勿用JavaScript

JavaScript脚本的运行成本是很高的!

借助后端的力量

  • 服务端渲染
  • 媒体查询改为后端通过判断用户设备浏览器的user-agent,精确返回该设备所需要的前端代码和相关资源。
  • 后端对图片、音频、视频进行实时压缩

性能测试工具

  • 想查看不同浏览器(甚至低版本IE)的资源加载情况,可以使用Dynatrace的dynaTrace Ajax;
  • 想实际测试页面在不同设备上的情况,可以使用BrowserStack服务;
  • 想更细致地分析底层网络请求情况,可以使用CloudShark;
  • 想了解用户的用户体验,可以使用WebPagetest。

更多技术

欢迎大家留言共创,将持续更新哦!

目录
相关文章
|
19天前
|
Web App开发 JavaScript 前端开发
[译] 用 Web Worker 改善 Vue 组件性能
[译] 用 Web Worker 改善 Vue 组件性能
|
3月前
|
分布式计算 并行计算 安全
在Python Web开发中,Python的全局解释器锁(Global Interpreter Lock,简称GIL)是一个核心概念,它直接影响了Python程序在多线程环境下的执行效率和性能表现
【6月更文挑战第30天】Python的GIL是CPython中的全局锁,限制了多线程并行执行,尤其是在多核CPU上。GIL确保同一时间仅有一个线程执行Python字节码,导致CPU密集型任务时多线程无法充分利用多核,反而可能因上下文切换降低性能。然而,I/O密集型任务仍能受益于线程交替执行。为利用多核,开发者常选择多进程、异步IO或使用不受GIL限制的Python实现。在Web开发中,理解GIL对于优化并发性能至关重要。
52 0
|
17天前
|
缓存 安全 前端开发
【性能大逆袭】Web2py应用如何从龟速变飞快?六大优化秘籍让你的应用焕然一新!
【8月更文挑战第31天】Web2py是一款备受欢迎的全栈Python Web框架,以其内置的数据库抽象层和安全特性著称。然而,随着应用规模的扩大,性能瓶颈逐渐显现。本文通过对比分析,从代码层面(如减少数据库查询、避免全局变量)到部署策略(如静态文件压缩、CDN加速、选择合适数据库、优化查询、异步处理),全面介绍Web2py应用的性能优化方法及其应用场景。通过具体示例,展示了如何创建并优化一个简单的Web2py应用,旨在帮助开发者构建高效稳定的Web应用。
36 2
|
18天前
|
存储 缓存 前端开发
Servlet与JSP在Java Web应用中的性能调优策略
Servlet与JSP在Java Web应用中的性能调优策略
20 1
|
20天前
|
缓存 NoSQL 数据库
Web服务器与数据库优化:提升系统性能的最佳实践
【8月更文第28天】在现代的Web应用中,Web服务器与后端数据库之间的交互是至关重要的部分。优化这些组件及其相互作用可以显著提高系统的响应速度、吞吐量和可扩展性。本文将探讨几种常见的优化策略,并提供一些具体的代码示例。
32 1
|
21天前
|
缓存 前端开发 JavaScript
超时空加速秘籍:揭秘JavaScript前端开发中的性能魔法,让您的Web应用瞬间穿越到未来!
【8月更文挑战第27天】本文介绍了一系列实用的JavaScript性能优化方法并提供了示例代码,包括减少DOM操作、使用事件委托、避免阻塞主线程、异步加载资源、利用浏览器缓存、代码分割以及使用Service Worker等技术,帮助开发者有效提升Web应用性能和用户体验。
32 2
|
24天前
|
存储 缓存 监控
Memcached玩转Web性能:一致性哈希、数据持久化,一文全掌握!
【8月更文挑战第24天】Memcached是一款高性能的分布式内存对象缓存系统,它通过在网络中存储数据并使用简单的键值对机制来提高动态Web应用的性能。它可以显著减少数据库查询次数,进而减轻数据库负载并加快响应时间。为了最大化利用Memcached的优势,建议合理配置内存使用、采用一致性哈希策略、实施数据持久化措施,并持续监控系统健康状况。提供的示例代码展示了如何使用Java创建客户端、添加和获取数据。
28 1
|
30天前
|
缓存 编解码 前端开发
优化Web应用性能的前端技巧:从加载时间到用户体验
在现代Web开发中,提升前端性能不仅仅是为了缩短页面加载时间,更是为了提供更流畅的用户体验。本文将探讨几种有效的前端优化技术,包括懒加载、代码拆分、资源压缩以及浏览器缓存策略。通过具体实例和最佳实践,读者将能够掌握如何系统地提高Web应用的响应速度,减少资源消耗,并最终改善用户的整体体验。
|
17天前
|
物联网 C# 智能硬件
智能家居新篇章:WPF与物联网的智慧碰撞——通过MQTT协议连接与控制智能设备,打造现代科技生活的完美体验
【8月更文挑战第31天】物联网(IoT)技术的发展使智能家居设备成为现代家庭的一部分。通过物联网,家用电器和传感器可以互联互通,实现远程控制和状态监测等功能。本文将探讨如何在Windows Presentation Foundation(WPF)应用中集成物联网技术,通过具体示例代码展示其实现过程。文章首先介绍了MQTT协议及其在智能家居中的应用,并详细描述了使用Wi-Fi连接方式的原因。随后,通过安装Paho MQTT客户端库并创建MQTT客户端实例,演示了如何编写一个简单的WPF应用程序来控制智能灯泡。
37 0
|
17天前
|
Java 数据库 API
JSF与JPA的史诗级联盟:如何编织数据持久化的华丽织锦,重塑Web应用的荣耀
【8月更文挑战第31天】JavaServer Faces (JSF) 和 Java Persistence API (JPA) 分别是构建Java Web应用的用户界面组件框架和持久化标准。结合使用JSF与JPA,能够打造强大的数据驱动Web应用。首先,通过定义实体类(如`User`)和配置`persistence.xml`来设置JPA环境。然后,在JSF中利用Managed Bean(如`UserBean`)管理业务逻辑,通过`EntityManager`执行数据持久化操作。
27 0