跳至正文

⚡ 网站性能优化

📖 定义

网站性能优化是改善网站加载速度和响应性以增强用户体验的过程。快速的网站可以提高用户满意度、SEO排名和转化率。

🎯 简单类比

餐厅服务速度

慢餐厅(未优化)
├─ 点餐慢(服务器慢)
├─ 厨房混乱(代码低效)
└─ 菜品分开上(资源分散)

快餐厅(已优化)
├─ 快速接单(服务器快)
├─ 高效厨房(代码优化)
└─ 按顺序上菜(优先加载)

⚙️ 工作原理

1. DNS查找
2. TCP连接
3. HTTP请求
4. 服务器响应
5. HTML解析
6. 资源加载
7. 渲染

💡 关键示例

图片优化

<!-- ❌ 未优化 -->
<img src="photo.jpg">

<!-- ✅ 已优化 -->
<img
srcset="photo-400w.jpg 400w, photo-800w.jpg 800w"
sizes="(max-width: 600px) 400px, 800px"
src="photo-800w.jpg"
loading="lazy"
alt="描述"
>

<!-- 现代格式 -->
<picture>
<source type="image/webp" srcset="photo.webp">
<img src="photo.jpg" alt="描述">
</picture>

JavaScript优化

// ❌ 同步脚本
<script src="app.js"></script>

// ✅ defer
<script defer src="app.js"></script>

// 代码分割(React)
const HeavyComponent = lazy(() => import('./HeavyComponent'));

// 防抖
function debounce(func, wait) {
let timeout;
return function(...args) {
clearTimeout(timeout);
timeout = setTimeout(() => func.apply(this, args), wait);
};
}

缓存策略

// HTTP缓存
app.use('/static', express.static('public', {
maxAge: '1y',
immutable: true
}));

// Service Worker缓存
self.addEventListener('fetch', (event) => {
event.respondWith(
caches.match(event.request).then((response) => {
return response || fetch(event.request);
})
);
});

🤔 常见问题

Q1. 优化优先级?

A:

1. 用户感知(最重要)
- 初始加载速度(FCP、LCP)
- 交互响应性(FID)
- 视觉稳定性(CLS)

2. 资源大小
- 图片优化
- JavaScript包大小

测量 → 分析 → 改进 → 重复

Q2. 图片格式?

A:

WebP(广泛支持)
- 压缩率: ⭐⭐⭐⭐
- 支持: 大多数浏览器

JPEG(传统)
- 压缩率: ⭐⭐⭐
- 支持: 所有浏览器

推荐:
<picture>
<source type="image/webp" srcset="image.webp">
<img src="image.jpg" alt="...">
</picture>

🎬 总结

网站性能优化是用户体验的关键:

  • 测量: 数据驱动方法
  • 优先级: 先处理影响大的
  • 渐进式: 逐步进行
  • 持续: 定期监控和改进

快1秒,转化率提高7%! ⚡✨