网站性能优化的实战指南

简介: 性能优化是应用程序开发必须的工作之一,其目的之一为用户提供极致的速度体验,本文总结 WEB 应用或者网站可以快速实操的经验。

性能优化是应用程序开发必须的工作之一,其目的之一为用户提供极致的速度体验,本文总结 WEB 应用或者网站可以快速实操的经验。

应用本身

应用或者网站本身的优化,不包括逻辑和代码的优化。其中包括大家熟悉的资源最小化、图片懒加载、减少HTTP请求、延迟加载、预加载。

资源最小化

资源(静态资源)压缩是指从 HTMLCSSJavaScript 中删除不需要加载的不必要的冗余数据的过程,包括删除代码注释和格式、空白字符、未使用的代码、换行符等。现在的前端技术,这些工作都有现成的工具可以完成。

缩小 HTML、CSS 和 JavaScript 将加快前端加载时间,因为它减少了需要从服务器请求的代码量。

生成 HTML、CSS 和 JavaScript 代码的优化版本可以借助工具,如下:

延迟加载

延迟加载有助于进一步缩短前端加载时间,使用延迟加载,首先确保主要的内容先加载,如页面框架、文本内容、首屏内容等。在实际应用中可以对 JavaScript 进行延迟加载,HTML 中可以有两个相关属性 asyncdefer , 这个两个属性使得 script 都不会阻塞DOM 的渲染。:

  • defer 属性规定是否对脚本执行进行延迟,直到页面加载为止。
  • async:会使得 script 脚本异步的加载并在允许的情况下执行,并且不会按着 script 在页面中的顺序来执行,而是谁先加载完谁执行。
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-157283337-2"></script>
<script defer src="https://www.googletagmanager.com/gtag/js?id=UA-157283337-2"></script>

图片懒加载

图片懒加载又称图片延时加载、惰性加载,即在用户需要看到图片的时候加载,这样可以减少请求,节省带宽,提高页面加载速度。

通常将页面中的 img 标签属性 src 指向一张小尺寸图片或者为空,然后定义 data-src 属性指向真实的图片。当载入页面时,先把可视区域内的 img 标签的 data-src 属性值赋值给 src ,然后增加页面滚动事件,把用户即将看到的图片加载。

如果不想自己写代码,可以使用第三方脚本库,如 lazyload

现代浏览器也实现了懒加载的功能,即为需要实现懒加载的标签增加属性 loading="lazy",如:

<img src="image.jpg" alt="..." loading="lazy">
<iframe src="video-player.html" title="..." loading="lazy"></iframe>

预加载

预加载就是通过设置相应的资源属性告诉浏览器是否需要预取,包括 CSS文件、JavaScript文件、DNS接下,主要是在HTML页面的 <head></head> 间加入 <meta />

<link rel="dns-prefetch" href="//www.devpoint.cn" />
<link rel="preload" as="style" href="/devpoint/public/css/site.css"/>
<link as="script"  rel="preload" href="/devpoint/public/scripts/site_min.js" />

减少HTTP请求

减少HTTP请求,常见的原则页面尽量只有一个 CSS 文件和一个 JavaScript 文件,CSS小图片使用 CSS Sprites (使用图像集合拼接成一个图像文件,然后通过使用 CSS 中的 background-imagebackground-position 属性来显示所需的图像区域。这样做可以减少了所需的服务器请求数量)。

服务器侧

服务器侧这里简单介绍部署环境的优化,常见的方式是为静态资源增加缓存、压缩文件。

缓存

为静态资源增加缓存是常见的处理方式,通常在项目开发中建议采用动静分离,即所谓的静态资源与应用本身分离,方便对静态资源进行优化,增加缓存或者增加CDN都可以方便的实现。下面是以Nginx的配置为例,为静态资源增加缓存:

location ~* \.(gif|webp|txt|jpg|jpeg|png|swf|flv|ico|mp4|js|css|eot|ttf|woff|woff2|svg|bmp|doc|zip|docx|rar)$ {
    proxy_cache cache_one;
    proxy_cache_valid 200 302 24h;
    proxy_cache_valid 301 30d;
    proxy_cache_valid any 5m;
    expires 90d;
}

压缩文件

对于WEB项目,可以使用合适的方法压缩文件,可以轻松地对前端的加载时间产生重大影响。以下是可以遵循的两个不错的文件压缩选项:

Gzip :最流行的数据压缩和解压缩方法,所有现代浏览器都支持,Gzip 在将站点的 HTML、CSS 和 JavaScript 包发送到浏览器之前先在服务器端对其进行压缩,然后在客户端解压缩文件并传送内容。Brotli :与当前可用的压缩方法相比,它提供了最佳的压缩率,根据 CertSimple 的研究,Brotli 压缩 JavaScript 文件比 Gzip14%,而 HTML 和 CSS 压缩率比 Gzip21%17%

gzip on;
gzip_vary on;
gzip_proxied off;
gzip_comp_level 3;
gzip_buffers 32 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

总结

性能黄金法则80-90% 的最终用户响应时间用于下载前端组件,例如图像、样式表、脚本等。

因此,优化前端数据加载对于降低跳出率和增加用户在网站上的停留时间至关重要。


相关文章
|
3月前
|
缓存 监控 前端开发
前端性能优化实战:让你的网站快如闪电的十大秘籍
【9月更文挑战第3天】通过以上十大秘籍的实践,您可以显著提升网站的前端性能,让您的网站在竞争激烈的互联网环境中脱颖而出,为用户带来更加流畅和愉悦的体验。记住,前端性能优化是一个永无止境的过程,只有不断迭代和优化,才能保持网站的竞争力。
|
4月前
|
开发者 CDN 监控
【破局·提速】当Vaadin遇上性能怪圈:开发者的智慧较量与极速加载的实战秘籍!
【8月更文挑战第31天】本文详细介绍了优化Vaadin应用性能的方法,特别是提高加载速度的实战技巧。首先分析性能瓶颈,如服务器响应时间和数据库查询效率等;然后通过代码优化、数据分页与急切加载技术减少资源消耗;接着利用资源压缩合并及CDN加速,进一步提升加载速度;最后通过持续性能监控和测试确保优化效果。通过综合应用这些策略,可显著改善用户体验。
84 0
|
4月前
|
开发者 缓存 数据库
【性能奇迹】Wicket应用的极速重生:揭秘那些让开发者心跳加速的调优秘技!
【8月更文挑战第31天】在软件开发中,性能优化是确保应用快速响应和高效运行的关键。本书《性能调优:Apache Wicket应用的速度提升秘籍》详细介绍了如何优化Apache Wicket应用,包括代码优化、资源管理、数据库查询优化、缓存策略及服务器配置等方面。通过减少不必要的组件渲染、优化SQL查询、使用缓存和调整服务器设置等方法,本书帮助开发者显著提升Wicket应用的性能,确保其在高并发和数据密集型场景下的稳定性和响应速度。
48 0
|
4月前
|
存储 监控 固态存储
【性能突破】揭秘!如何让您的数据库在高并发风暴中稳如磐石——一场关于WAL写入性能优化的实战之旅,不容错过的技术盛宴!
【8月更文挑战第21天】在高并发环境下,数据库面临极大挑战,特别是采用Write-Ahead Logging (WAL)的日志机制。本文通过一个在线交易系统的案例,分析了WAL写入性能瓶颈,并提出优化方案:理解WAL流程;分析磁盘I/O瓶颈、缓冲区设置与同步策略;通过增大WAL缓冲区、使用SSD及调整同步策略来优化;最后通过测试验证改进效果,总结出一套综合优化方法。
73 0
|
6月前
|
SQL cobar 关系型数据库
程序技术好文:点我吧工作总结(技术篇)Cobar原理和环境搭建
程序技术好文:点我吧工作总结(技术篇)Cobar原理和环境搭建
50 0
|
设计模式 缓存 Java
吃透阿里2023版Java性能优化小册后,我让公司系统性能提升了200%
性能优化可以说是很多一线大厂对其公司内高级开发的基本要求(其中以Java岗最为显著)。其原因有两个:一是提高系统的性能,二是为公司节省资源。两者都能做到,那你就不可谓不是普通程序员眼中的“调优大神了”。 那么如何成为一名“调优大神”呢?
|
SQL 移动开发 网络协议
【优化技术专题】「系统性能调优实战」终极关注应用系统性能调优及原理剖析(上册)
【优化技术专题】「系统性能调优实战」终极关注应用系统性能调优及原理剖析(上册)
159 0
|
SQL 缓存 监控
【优化技术专题】「系统性能调优实战」终极关注应用系统性能调优及原理剖析(下册)
【优化技术专题】「系统性能调优实战」终极关注应用系统性能调优及原理剖析(下册)
145 0
|
机器学习/深度学习 编解码 并行计算
绕不开的模型部署?不怕,我们手把手教你学会!
在软件工程中,部署指把开发完毕的软件投入使用的过程,包括环境配置、软件安装等步骤。类似地,对于深度学习模型来说,模型部署指让训练好的模型在特定环境中运行的过程。相比于软件部署,模型部署会面临更多的难题
2144 0
绕不开的模型部署?不怕,我们手把手教你学会!
|
存储 缓存 监控
珍藏版《大型网站技术架构知识汇总》,架构师必备
珍藏版《大型网站技术架构知识汇总》,架构师必备
208 0
珍藏版《大型网站技术架构知识汇总》,架构师必备
下一篇
DataWorks