欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > 每天一个前端小知识 Day 8 - 网络通信与前端性能优化

每天一个前端小知识 Day 8 - 网络通信与前端性能优化

2025/11/10 23:19:59 来源:https://blog.csdn.net/weixin_51798265/article/details/148816780  浏览:    关键词:每天一个前端小知识 Day 8 - 网络通信与前端性能优化

网络通信与前端性能优化


1. 前端常用网络通信方式对比

方式场景说明特点
XMLHttpRequest老式 AJAX 通信回调繁琐,兼容性好
fetch API现代标准,逐步取代 XHRPromise 基础,更简洁
axios基于 xhr 的封装库拦截器、默认配置、适配性强
WebSocket实时通信,如聊天室、推送长连接,双向通信
SSE服务端单向推送(Server-Sent)比 WebSocket 简单,单向

2. fetch API 核心特性

fetch('/api/data').then(res => res.json()).then(data => console.log(data)).catch(err => console.error(err));

特点:

  • 默认不带 Cookie(需设置 credentials: 'include');
  • 响应状态码错误不会触发 catch(要手动判断 res.ok);
  • 不支持请求/响应拦截(需封装);

3. 网络请求优化策略

技术说明
请求合并GraphQL、批量接口
懒加载 / 预加载图片懒加载(loading="lazy")、prefetch 标签
CDN 加速静态资源分发,地理就近请求
本地缓存localStorage / sessionStorage / indexedDB
强缓存 / 协商缓存HTTP 头部配置:Cache-ControlETag
请求去重与节流对并发相同请求进行防抖、去重

4. 性能优化核心指标(Web Vitals)

指标说明
FCP (First Contentful Paint)首次内容绘制时间
LCP (Largest Contentful Paint)最大内容绘制时间(首屏加载关键)
TTI (Time to Interactive)用户可交互的时间点
CLS (Cumulative Layout Shift)页面布局稳定性
TBT (Total Blocking Time)阻塞主线程时间

📌 Chrome DevTools / Lighthouse 可直接检测这些指标


5. 首屏加载优化策略(面试重点)

✅ 减少首屏资源体积
  • Tree Shaking / SplitChunks
  • 图片压缩(webp / AVIF)
  • CDN 加载第三方库(如 Vue/React)
✅ 减少请求数
  • 合并 CSS/JS 文件
  • 使用 SVG Sprite 代替多张图标
  • Base64 小图内联
✅ 异步加载不影响首屏资源
  • 动态 import 非首屏组件
  • 使用 async / defer 加载脚本
  • 路由懒加载 + Skeleton 骨架屏

6. 浏览器缓存机制

类型说明
强缓存状态码 200,读取本地缓存(Cache-Control: max-age
协商缓存状态码 304,请求服务器判断是否变更(ETag
Cookie小数据,自动携带,适合登录态
localStorage大容量(5MB),持久保存
sessionStorage生命周期短,刷新页面清除
indexedDB结构化数据缓存,适合离线应用

7. 面试高频问题精讲

📌 Q1:浏览器如何实现缓存优化?

答:

  • 利用 HTTP 的 Cache-Control / ETag 实现静态资源缓存;
  • 对于版本化资源,可设置长时间强缓存(max-age=31536000);
  • 使用内容哈希(如 main.abc123.js)实现更新检测;
  • 脚本/样式外链并合理使用 async / defer

📌 Q2:首屏加载太慢怎么办?
  • 优化图片和资源大小;
  • 使用 SSR 或 CSR + Skeleton 加速渲染;
  • 优化依赖树,减少初始打包;
  • 使用 link rel="preload" 预加载关键资源;
  • 开启 gzip / brotli 传输压缩。

📌 Q3:fetch 和 axios 的区别?
特性fetchaxios
基础实现原生 API封装于 XMLHttpRequest
默认行为不自动处理状态码错误自动抛出异常
拦截器支持请求与响应拦截
请求取消AbortControllerCancelToken (v1) / AbortSignal (v2)

📌 Q4:你如何理解懒加载和预加载?
  • 懒加载(Lazy Load):按需加载,延迟加载不在视口的资源;
  • 预加载(Preload / Prefetch):提前加载未来可能需要的资源;
  • 配合 IntersectionObserver 实现图片/组件懒加载更高效。

8. 实战建议总结

  • 请求层建议封装(axios + 拦截器 + 类型定义);
  • 使用 useSWR / react-query 等状态缓存方案提升体验;
  • 开发中应随时分析 network、资源 waterfall;
  • 性能优化是过程,不是一次性的「打鸡血式」修复;
  • 「按需加载 + 缓存 + CDN + 压缩」是黄金组合;

✅ 总结

网络优化与性能调优,是高阶前端不可回避的责任。不仅影响用户体验,也关乎产品核心数据指标(如转化率、留存率)。理解浏览器通信机制、缓存策略、性能评估工具,让你在面试与实战中脱颖而出。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词