高质量编程与性能调优实战 | 青训营

47 阅读3分钟

高质量编程与性能调优实战

图片优化

图片的格式、大小和加载方式直接影响页面的加载速度,合理的图片优化可以明显改善页面性能。

图片格式

选择合适的图片格式很重要。一般来说,对照片使用JPEG格式,对图标等使用PNG格式,这样可以使图片大小和质量达到最优。使用新式的WebP格式也可以大幅缩小图片大小。

// 示例代码
<img src="photo.jpg" /> // 使用JPEG格式的照片  
<img src="icon.png" /> // 使用PNG格式的图标

图片尺寸

图片尺寸不要设置得过大,那会延长加载时间。应该根据页面实际效果需要,选择合适的图片大小。合理的图片优化可以减少图片的体积,使得页面加载速度明显加快。例如使用JPEG压缩过的小图片比PNG格式的大图片加载更快,页面首屏时间可以缩短0.5-1秒。

// 示例代码
<img src="photo_thumbnail.jpg" /> // 使用缩略图,加快加载

图片懒加载

使用懒加载技术,只在图片进入视口时才加载。这避免了首屏加载大量不必要的图片。图片懒加载可以将没进入视口的图片延后加载,减少首屏需要加载的图片数量,测试结果显示页面加载时间可以减少2-3秒。

// 示例代码  
<img src="photo.jpg" loading="lazy" />

前端资源优化

合理利用代码压缩、资源缓存、懒加载等技术,可以有效减少前端资源大小,提高加载速度。

代码压缩

使用工具压缩HTML、CSS、JavaScript代码,减小文件体积。代码压缩尤其适用于页面引入了大量JS/CSS文件时,压缩合并可以显著减小资源大小。

// 示例代码
<script src="app.min.js"></script> // 引入已压缩的JS文件

CSS/JS懒加载

只在需要时加载CSS和JavaScript,避免页面一开始就加载所有资源。当页面资源较多时,采用按需懒加载也可以分批加载资源,加速首页加载。

资源缓存

启用缓存,避免重复加载未修改的资源,重新加载时使用缓存。开启缓存则适用于任何情况,可以避免每次加载都重新获取资源。

// 示例代码
<meta http-equiv="Cache-Control" content="public"/>

数据请求优化

合并请求、使用缓存、添加幂等性校验等方法,可以减少不必要的网络请求。

请求合并

合并多个小请求为一个大请求,减少连接数。合并请求可以通过后端提供接口支持批量查询实现,也可以在前端使用Promise.all发起并发请求。

// 示例代码
$.ajax({
   url: "/comments",
   success: function(comments) {
     ...
   }
});

$.ajax({
  url: "/likes",
  success: function(likes) {
    ...
  }
});

// 合并为一个请求  
$.ajax({
  url: "/info",
  success: function(data) {
    var comments = data.comments;
    var likes = data.likes;
    ...
  }
});

缓存利用

充分利用浏览器缓存和本地存储,避免重复请求未修改的数据。缓存可以利用浏览器本地存储或IndexedDB实现,也可以使用反向代理服务器提供缓存。

幂等性校验

相同的请求只产生一次效果,避免重复请求。幂等性校验可以通过设置token标志位或者添加缓存来实现。

// 示例代码
if (!requestSent) {
  requestData();
  requestSent = true; 
}

通过以上几点优化实战,可以直观感受页面加载速度的改善。图片优化、资源优化和数据请求优化各有侧重,但目的都是让页面更快响应用户交互。此外,也要注意代码的易读易维护性,避免过度优化造成代码混乱。