前端性能优化(二)| 小册免费学

简介: 上一节介绍了网页加载过程中可优化的点,这一节我来说一下网络部分的优化。

f13e9bd95fe23936db9792df8bb05a4.png

上一节介绍了网页加载过程中可优化的点,这一节我来说一下网络部分的优化。

网络部分包括了以下几个过程:

  • DNS查询
  • 建立TCP连接
  • 发送HTTP请求

这几点中DNS和TCP方面我们其实是无从下手的,所以我们只能咋HTTP上动刀子了。HTTP是一个往返的过程,浏览器发送请求和接收响应。


请求


在请求层面,上一节我们也说到了请求环节的优化,那就是减少HTTP请求,因为网络请求是整个过程中最不确定的因素,它受环境的影响最为直观。那么具体该从哪些方面减少,比如:

  • 每一个图片、样式……加载都会发送HTTP请求,所以可以将图片转为base64,现在前端开发一般都是使用打包工具来进行的工程化开发,打包工具一般会提供图片转base64的插件;合并小图标到css sprites (CSS精灵图)等,将小图标放置到一个文件,只需要一次加载,然后从这一张图片的位置去裁切,但是不要盲目合并导致文件过大,那样同样可能会影响体验
  • 过多的样式文件和脚本文件也会增加HTTP的压力,所以适当的将脚本和样式进行合并,但是不要盲目合并,盲目合并导致文件过大同样会影响加载速度
  • 少用location.reload()来刷新页面,每重新加载一次都会重新去请求资源


响应


在响应方面可以做的优化其实很简单,减小响应资源的体积——使用gzip压缩,启用gzip压缩也很简单,只需要在请求头中加入accept-encoding:gzipHTTP 压缩就是以缩小体积为目的,对 HTTP 内容进行重新编码的过程

gzip可以帮我们压缩大约70%体积,但是他并不是万能的,他也是有代价的,开启gzip需要浪费服务器的计算资源,服务器的 CPU 性能不是无限的,如果存在大量的压缩需求,服务器也扛不住的,这时候就会得不偿失


HTTP缓存


HTTP缓存是一个减少加载时间的最有效地方法,HTTP缓存有强缓存和协商缓存两种形式。

强缓存使用Expires 和 Cache-Control 两个字段来控制,当请求再次发出时,浏览器会根据其中的 expires 和 cache-control 判断目标资源是否“命中”强缓存,若命中则直接从缓存中获取资源,不会再与服务端发生通信。

来看一个使用了强缓存的响应,可以看到它使用了cache-control,最大有效时间31536000,换算过来借接近一年,也就是说在未来一年中都不需要再去请求这个资源

1682513872(1).png

协商缓存顾名思义就是浏览器和服务器共同协商的结果,当请求资源的时候浏览器会询问服务器资源是否过期,如果过期就重新加载资源,如果没有过期就直接使用缓存资源,协商缓存常用的字段有ETag/If-None-Match、Last-Modified/If-Modified-Since等

使用协商缓存之后HTTP状态码会变为304

1682513899(1).png

关于强缓存和协商缓存可以看我之前的这篇文章


内容分发网络CDN


现在CDN已经是一种很廉价的资源了,各大云服务商都提供了自己的CDN服务,价格也很便宜,CDN通过判断用户的地理位置来选择请求距离最近的一台服务器,来减少资源传输的距离,从而减少响应的时间

CDN的核心在于缓存和回源,CDN服务器会缓存根服务器的资源文件;回源是CDN服务器去向根服务器请求资源的过程,一般发生在资源缓存过期。

静态资源加载速度始终是前端性能的一个非常关键的指标,因为静态资源的请求量一般比较大,而且体积较大,放置到CDN上可以减轻应用服务器的压力,应用服务器就可以专心处理业务而不用分心来响应静态资源。一般放置在CDN上的都是些静态文件,比如图片、样式文件等


懒加载


懒加载可以将不重要的图片文件在需要时加载,优先将网页的整体框架加载出来,当用户需要浏览图片时再去请求。此外可以在用户等待页面加载的过程中使用骨架屏来优化用户的体验,比如掘金的文章详情页就使用了骨架屏

1682513920(1).png


相关文章
|
前端开发 JavaScript 小程序
预备金九银十,这套前端面试小册阁下请收好
预备金九银十,这套前端面试小册阁下请收好
97 0
|
JavaScript 前端开发 Go
前端性能优化(四)| 小册免费学
前面介绍多个前端性能优化的点,现在我们来说一下性能优化的最后一关——页面渲染 浏览器渲染的过程我们之前也稍微提过,这里再说一下解析 HTML 文件,构建 DOM 树,同时浏览器主进程负责下载 CSS 文件
115 0
|
存储 Web App开发 缓存
前端性能优化(三)| 小册免费学
上一讲我们说到了HTTP缓存,这一讲的缓存并不单单指HTTP缓存
111 0
|
域名解析 缓存 网络协议
前端性能优化(一)| 小册免费学
移动互联网时代,用户对于网页的打开速度要求越来越高。首屏作为直面用户的第一屏,其重要性不言而喻。优化用户体验更是我们前端开发非常需要 focus 的东西之一。
93 0
|
4月前
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
304 14
|
4月前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
83 0
|
4月前
|
人工智能 自然语言处理 运维
前端大模型应用笔记(一):两个指令反过来说大模型就理解不了啦?或许该让第三者插足啦 -通过引入中间LLM预处理用户输入以提高多任务处理能力
本文探讨了在多任务处理场景下,自然语言指令解析的困境及解决方案。通过增加一个LLM解析层,将复杂的指令拆解为多个明确的步骤,明确操作类型与对象识别,处理任务依赖关系,并将自然语言转化为具体的工具命令,从而提高指令解析的准确性和执行效率。
|
4月前
|
存储 弹性计算 算法
前端大模型应用笔记(四):如何在资源受限例如1核和1G内存的端侧或ECS上运行一个合适的向量存储库及如何优化
本文探讨了在资源受限的嵌入式设备(如1核处理器和1GB内存)上实现高效向量存储和检索的方法,旨在支持端侧大模型应用。文章分析了Annoy、HNSWLib、NMSLib、FLANN、VP-Trees和Lshbox等向量存储库的特点与适用场景,推荐Annoy作为多数情况下的首选方案,并提出了数据预处理、索引优化、查询优化等策略以提升性能。通过这些方法,即使在资源受限的环境中也能实现高效的向量检索。
101 1
|
4月前
|
机器学习/深度学习 弹性计算 自然语言处理
前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
218 1
|
4月前
|
前端开发 算法 测试技术
前端大模型应用笔记(五):大模型基础能力大比拼-计数篇-通义千文 vs 文心一言 vs 智谱 vs 讯飞vsGPT
本文对比测试了通义千文、文心一言、智谱和讯飞等多个国产大模型在处理基础计数问题上的表现,特别是通过链式推理(COT)提示的效果。结果显示,GPTo1-mini、文心一言3.5和讯飞4.0Ultra在首轮测试中表现优秀,而其他模型在COT提示后也能显著提升正确率,唯有讯飞4.0-Lite表现不佳。测试强调了COT在提升模型逻辑推理能力中的重要性,并指出免费版本中智谱GLM较为可靠。
124 0
前端大模型应用笔记(五):大模型基础能力大比拼-计数篇-通义千文 vs 文心一言 vs 智谱 vs 讯飞vsGPT

热门文章

最新文章

  • 1
    【Java若依框架】RuoYi-Vue的前端和后端配置步骤和启动步骤
  • 2
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 3
    【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
  • 4
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 5
    详解智能编码在前端研发的创新应用
  • 6
    巧用通义灵码,提升前端研发效率
  • 7
    【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
  • 8
    智能编码在前端研发的创新应用
  • 9
    【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
  • 10
    抛弃node和vscode,如何用记事本开发出一个完整的vue前端项目
  • 1
    以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
    24
  • 2
    大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
    43
  • 3
    【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
    25
  • 4
    巧用通义灵码,提升前端研发效率
    84
  • 5
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    137
  • 6
    详解智能编码在前端研发的创新应用
    92
  • 7
    智能编码在前端研发的创新应用
    75
  • 8
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    35
  • 9
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    111
  • 10
    【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
    73