<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>网络性能优化 on Last Stand</title><link>https://amatsuzero.github.io/LastStand/tags/%E7%BD%91%E7%BB%9C%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/</link><description>Recent content in 网络性能优化 on Last Stand</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Wed, 06 Aug 2025 00:00:00 +0800</lastBuildDate><atom:link href="https://amatsuzero.github.io/LastStand/tags/%E7%BD%91%E7%BB%9C%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/index.xml" rel="self" type="application/rss+xml"/><item><title>网络性能优化</title><link>https://amatsuzero.github.io/LastStand/posts/frontend/network/network-018/</link><pubDate>Mon, 28 Jul 2025 00:00:00 +0800</pubDate><guid>https://amatsuzero.github.io/LastStand/posts/frontend/network/network-018/</guid><description>&lt;p&gt;浏览器在加载页面时，大量的性能瓶颈集中在资源的请求、传输、解析与执行上。因此，&lt;strong&gt;网络层的性能优化&lt;/strong&gt;主要目标是：&lt;strong&gt;减少请求次数、降低资源大小、缩短首屏时间、提升加载体验&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="一请求数量优化"&gt;一、请求数量优化&lt;/h2&gt;
&lt;h3 id="1-合理拆分和合并资源"&gt;1. 合理拆分和合并资源&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;按需加载（lazy loading / dynamic import）&lt;/strong&gt;：不一次加载所有模块，只加载当前页面/功能所需资源。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;资源合并（资源打包）&lt;/strong&gt;：减少请求数量，如合并多个 CSS/JS 文件（现代工具也支持 HTTP2 下保留拆分）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;服务端渲染/预渲染&lt;/strong&gt;：减轻首屏资源请求压力。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-使用缓存避免重复请求"&gt;2. 使用缓存避免重复请求&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;使用浏览器缓存控制（&lt;code&gt;Cache-Control&lt;/code&gt;、&lt;code&gt;ETag&lt;/code&gt;、&lt;code&gt;Last-Modified&lt;/code&gt;）；&lt;/li&gt;
&lt;li&gt;对于不变资源，设置强缓存（&lt;code&gt;immutable&lt;/code&gt;）；&lt;/li&gt;
&lt;li&gt;对接口返回数据做缓存（前端缓存策略或 HTTP 层缓存）；&lt;/li&gt;
&lt;li&gt;本地缓存，如 IndexedDB / LocalStorage 存储接口数据。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="二资源体积优化"&gt;二、资源体积优化&lt;/h2&gt;
&lt;h3 id="1-压缩与代码优化"&gt;1. 压缩与代码优化&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;启用 Gzip / Brotli 压缩静态资源（HTML、CSS、JS）；&lt;/li&gt;
&lt;li&gt;压缩图像（WebP、AVIF）、字体、视频等媒体资源；&lt;/li&gt;
&lt;li&gt;减少 polyfill 体积（如使用 &lt;code&gt;core-js&lt;/code&gt; 按需引入）；&lt;/li&gt;
&lt;li&gt;移除无用代码（Tree Shaking、CSS Purge、babel-plugin-transform-remove-console）；&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-精简传输内容"&gt;2. 精简传输内容&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;请求接口时使用精简字段、分页、后端裁剪；&lt;/li&gt;
&lt;li&gt;GraphQL 可按需返回字段，减少冗余数据传输；&lt;/li&gt;
&lt;li&gt;降低 Cookie 和请求头大小，避免请求体负担。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="三加载顺序与优先级优化"&gt;三、加载顺序与优先级优化&lt;/h2&gt;
&lt;h3 id="1-关键资源优先加载"&gt;1. 关键资源优先加载&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;使用 &lt;code&gt;preload&lt;/code&gt;、&lt;code&gt;prefetch&lt;/code&gt;、&lt;code&gt;dns-prefetch&lt;/code&gt; 等 &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; 标签提示浏览器提前加载；&lt;/li&gt;
&lt;li&gt;使用 Webpack 的资源预加载配置控制打包 chunk 优先级；&lt;/li&gt;
&lt;li&gt;首屏资源内联（inline critical CSS）避免阻塞渲染。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-非关键资源延后加载"&gt;2. 非关键资源延后加载&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;图片懒加载（&lt;code&gt;loading=&amp;quot;lazy&amp;quot;&lt;/code&gt;、IntersectionObserver）；&lt;/li&gt;
&lt;li&gt;JS 异步加载（&lt;code&gt;&amp;lt;script async|defer&amp;gt;&lt;/code&gt;）；&lt;/li&gt;
&lt;li&gt;第三方 SDK、监控等可延迟初始化。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="四协议与传输层优化"&gt;四、协议与传输层优化&lt;/h2&gt;
&lt;h3 id="1-使用-http2-或-http3"&gt;1. 使用 HTTP/2 或 HTTP/3&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;多路复用，减少 TCP 连接数，提高并发请求效率；&lt;/li&gt;
&lt;li&gt;头部压缩与服务器推送（HTTP/2 Push）；&lt;/li&gt;
&lt;li&gt;HTTP/3 基于 QUIC，有更快的连接建立速度与更少的丢包重传。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-减少不必要的重定向"&gt;2. 减少不必要的重定向&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;避免链式跳转；&lt;/li&gt;
&lt;li&gt;减少使用 302/301 等中间状态跳转，优化首次加载路径。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="五安全策略与跨域优化"&gt;五、安全策略与跨域优化&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;合理设置 &lt;code&gt;CORS&lt;/code&gt;，减少 preflight 请求；&lt;/li&gt;
&lt;li&gt;使用同源策略时避免冗余 OPTIONS 请求；&lt;/li&gt;
&lt;li&gt;减少跨域请求带来的额外开销（如 DNS、TLS 握手等）。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="六cdn-与资源分发优化"&gt;六、CDN 与资源分发优化&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;使用 CDN 加速静态资源访问，减少物理距离造成的 RTT；&lt;/li&gt;
&lt;li&gt;使用全局 CDN 覆盖，支持边缘缓存与智能调度；&lt;/li&gt;
&lt;li&gt;配合版本号和 Hash 控制缓存刷新策略。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="七服务端协同优化"&gt;七、服务端协同优化&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;接口合并：多个小请求可由后端合并为一次大请求返回；&lt;/li&gt;
&lt;li&gt;接口压缩与限流：避免无用数据占带宽；&lt;/li&gt;
&lt;li&gt;优化接口响应结构与字段粒度；&lt;/li&gt;
&lt;li&gt;为前端提供异步批量资源接口（如配置/字典项/用户信息等合并加载）；&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="八实际指标与监控优化点"&gt;八、实际指标与监控优化点&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;首字节时间（TTFB）优化；&lt;/li&gt;
&lt;li&gt;首屏渲染时间（FCP、LCP）优化；&lt;/li&gt;
&lt;li&gt;页面总加载时间（Fully Loaded）优化；&lt;/li&gt;
&lt;li&gt;网络错误率（如资源 404、接口失败率）监控；&lt;/li&gt;
&lt;li&gt;使用 Performance API、Web Vitals、Lighthouse 工具分析网络瓶颈。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="要点总结"&gt;要点总结&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;网络优化的本质是：&lt;strong&gt;更快、更少、更智能地请求资源&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;从请求数量、资源大小、传输协议、加载优先级、缓存策略、CDN 分发等多个维度同时入手；&lt;/li&gt;
&lt;li&gt;优化不是单一操作，而是&lt;strong&gt;持续评估、定位瓶颈、迭代调整&lt;/strong&gt;的过程；&lt;/li&gt;
&lt;li&gt;实际开发中建议结合 Chrome DevTools、Lighthouse、Performance API 等工具进行精细化分析与验证。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="常见考点"&gt;常见考点&lt;/h2&gt;
&lt;p&gt;前端“网络层面的性能优化”是高频面试考点，涵盖了从资源加载、缓存、连接管理，到协议选择等多个方向。面试时往往从“用户输入 URL 到页面加载”这条链路入手，考查在网络传输环节提升页面性能的能力。&lt;/p&gt;</description></item></channel></rss>