前端网站优化方法大全

8 阅读2分钟

1. 资源加载优化

(1)减少HTTP请求

  • 合并文件:将多个CSS/JS文件合并,减少请求次数。
  • 使用CSS Sprites:将小图标合并成一张大图,减少图片请求。
  • 内联关键CSS/JS:首屏关键代码直接内联到HTML,减少渲染阻塞。

(2)资源压缩

  • 代码压缩:使用工具(如Terser、UglifyJS)压缩JS,CSSNano压缩CSS。
  • 图片优化
    • 使用WebP代替JPEG/PNG(兼容性允许时)。
    • 使用<picture>srcset适配不同分辨率。
    • 工具压缩:TinyPNG、ImageOptim。
  • Gzip/Brotli压缩:服务器启用压缩,减少传输体积。

(3)按需加载

  • 懒加载(Lazy Load):图片、iframe等资源在进入视口时再加载。
  • 代码分割(Code Splitting)
    • Webpack的SplitChunksPlugin拆分公共代码。
    • 动态导入(import())实现按需加载组件。

(4)预加载关键资源

  • <link rel="preload">:提前加载关键CSS/字体/脚本。
  • <link rel="prefetch">:预加载后续页面可能需要的资源。
  • <link rel="preconnect">:提前建立DNS/TCP连接(如CDN、API域名)。

2. 渲染性能优化

(1)减少重排(Reflow)和重绘(Repaint)

  • 使用transformopacity代替top/left等属性(触发GPU加速)。
  • 避免频繁操作DOM,使用documentFragment或虚拟DOM(如React/Vue)。
  • 使用will-change提示浏览器哪些元素会变化。

(2)优化CSS

  • 避免深层嵌套选择器(如.nav ul li a),影响渲染速度。
  • 使用Flex/Grid布局,减少浮动和定位的使用。
  • 减少@import(会阻塞渲染),改用<link>加载CSS。

(3)优化JavaScript执行

  • 减少主线程阻塞
    • 长任务拆分为小任务(使用setTimeoutrequestIdleCallback)。
    • Web Worker处理复杂计算。
  • 防抖(Debounce)和节流(Throttle):优化scrollresize等高频事件。
  • **使用requestAnimationFrame**优化动画,避免setTimeout抖动。

3. 缓存策略

(1)浏览器缓存

  • 强缓存Cache-Control: max-age=31536000(1年)。
  • 协商缓存ETag/Last-Modified,减少重复下载。

(2)Service Worker

  • 实现离线缓存(PWA),提升二次访问速度。

(3)CDN加速

  • 静态资源(JS/CSS/图片)部署到CDN,减少网络延迟。

4. 其他优化

(1)减少第三方脚本

  • 延迟加载分析工具(如Google Analytics)。
  • 使用asyncdefer加载非关键JS。

(2)SSR/SSG(服务端渲染/静态生成)

  • Next.js/Nuxt.js等框架优化首屏加载。

(3)优化Web字体

  • 使用font-display: swap避免字体加载时的空白期。
  • 仅加载需要的字重(如woff2格式)。

总结

前端优化涉及多个方面,核心目标是减少加载时间、提升渲染效率、优化用户体验。可以通过工具(如Lighthouse、WebPageTest)检测性能瓶颈,并持续优化。