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

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

f13e9bd95fe23936db9792df8bb05a4.png

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

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

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

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


请求


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

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


响应


在响应方面可以做的优化其实很简单,减小响应资源的体积——使用gzip压缩,启用gzip压缩也很简单,只需要在请求头中加入accept-encoding:gzip。HTTP 压缩就是以缩小体积为目的,对 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 小程序
预备金九银十,这套前端面试小册阁下请收好
预备金九银十,这套前端面试小册阁下请收好
323 0
|
JavaScript 前端开发 Go
前端性能优化(四)| 小册免费学
前面介绍多个前端性能优化的点,现在我们来说一下性能优化的最后一关——页面渲染 浏览器渲染的过程我们之前也稍微提过,这里再说一下解析 HTML 文件,构建 DOM 树,同时浏览器主进程负责下载 CSS 文件
294 0
|
存储 Web App开发 缓存
前端性能优化(三)| 小册免费学
上一讲我们说到了HTTP缓存,这一讲的缓存并不单单指HTTP缓存
313 0
|
域名解析 缓存 网络协议
前端性能优化(一)| 小册免费学
移动互联网时代,用户对于网页的打开速度要求越来越高。首屏作为直面用户的第一屏,其重要性不言而喻。优化用户体验更是我们前端开发非常需要 focus 的东西之一。
259 0
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
1780 14
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
1164 0
|
SpringCloudAlibaba JavaScript 前端开发
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
分布式组件、nacos注册配置中心、openfegin远程调用、网关gateway、ES6脚本语言规范、vue、elementUI
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
|
人工智能 自然语言处理 运维
前端大模型应用笔记(一):两个指令反过来说大模型就理解不了啦?或许该让第三者插足啦 -通过引入中间LLM预处理用户输入以提高多任务处理能力
本文探讨了在多任务处理场景下,自然语言指令解析的困境及解决方案。通过增加一个LLM解析层,将复杂的指令拆解为多个明确的步骤,明确操作类型与对象识别,处理任务依赖关系,并将自然语言转化为具体的工具命令,从而提高指令解析的准确性和执行效率。
952 6
|
机器学习/深度学习 弹性计算 自然语言处理
前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
1538 1

热门文章

最新文章

  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
    1442
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    715
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    572
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    579
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    665
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    844
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    1652
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    399
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    1369
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    677