白屏加载和首屏加载时间的区别

白屏时间是指浏览器从响应用户输入网址地址,到浏览器开始显示内容的时间。

首屏时间是指浏览器从响应用户输入网址地址,到首屏内容渲染完成的时间,此时整个网页不一定要全部渲染完成,但在当前视窗的内容需要。

白屏时间是首屏时间的一个子集。

被忽视的首屏加载

用户体验对web网页来说很重要,而首屏加载是用户体验中最重要的环节之一,可能没有之一。然而现在的很多前端开发者,都没能重视对首屏加载的优化。

正常来说,首屏加载时间不应该超过2s。有些成熟的网页比如京东和淘宝,虽然页面模块非常多且复杂,但通过优化,首屏加载时间却不长。

如果一个页面完成首屏加载需要5秒以上,可能用户下次就从心理排斥打开这个页面。换言之,首屏加载时间对用户留存率影响很大。

如何优化首屏加载时间

1.cdn分发(减少传输距离)。通过在多台服务器部署相同的副本,当用户访问时,服务器根据用户跟哪台服务器距离近,来决定哪台服务器去响应这个请求。

2. 后端在业务层的缓存。数据库查询缓存是可以设置缓存的,这个对于处于高频率的请求很有用。浏览器一般不会对content-type: application/json;的接口进行缓存,所以有时需要我们手动地为接口设置缓存。比如一个用户的签到状态,它的缓存时间可以设置到明天之前。

3. 静态文件缓存方案。这个最常看到。现在流行的方式是文件hash+强缓存的一个方案。比如hash+ cache control: max-age=1年。

4. 前端的资源动态加载:

a. 路由动态加载,最常用的做法,以页面为单位,进行动态加载。
b. 组件动态加载(offScreen Component),对于不在当前视窗的组件,先不加载。
c. 图片懒加载(offScreen Image),同上。值得庆幸的是,越来越多的浏览器支持原生的懒加载,通过给img标签加上loading="lazy来开启懒加载模式。 

5. 减少请求的数量。这点在http1.1的优势很明显,因为http1.1的请求是串行的(尽管有多个tcp通道),每个请求都需要往返后才能继续下个请求。此时合并请求可以减少在路途上浪费的时间,此外还会带来重复的请求头部信息(比如cookie)。在http2.0中这个问题会弱化很多,但也有做的必要。

6. 页面使用骨架屏。意思是在首屏加载完成之前,通过渲染一些简单元素进行占位。骨架屏的好处在于可以减少用户等待时的急躁情绪。这点很有效,在很多成熟的网站(京东、淘宝、Youtube)都有大量应用。没有骨架屏的话,一个loading的菊花图也是可以的。

7. 使用ssr渲染。

8. 引入http2.0。http2.0对比http1.1,最主要的提升是传输性能,在接口小而多的时候会更加明显。

9. 利用好http压缩。即使是最普通的gzip,也能把bootstrap.min.css压缩到原来的17%。可见,压缩的效果非常明显,特别是对于文本类的静态资源。另外,接口也是能压缩的。接口不大的话不用压缩,因为性价比低(考虑压缩和解压的时间)。

10. 利用好script标签的async和defer这两个属性。功能独立且不要求马上执行的js文件,可以加入async属性。如果是优先级低且没有依赖的js,可以加入defer属性。

11. (少用)选择先进的图片格式。使用 WebP 的图片格式来代替现有的jpeg和png,当页面图片较多时,这点作用非常明显。把部分大容量的图片从BaseLine JPEG切换成Progressive JPEG(理解这两者的差别)也能缩小体积。

12. (少用)渲染的优先级。浏览器有一套资源的加载优先级策略。也可以通过js来自己控制请求的顺序和渲染的顺序。一般我们不需要这么细粒度的控制,而且控制的代码也不好写。

13. (少用)前端做一些接口缓存。前端也可以做接口缓存,缓存的位置有两个,一个是内存,即赋值给运行时的变量,另一个是localStorage。比如用户的签到日历(展示用户是否签到),我们可以缓存这样的接口到localStorage,有效期是当天。或者有个列表页,我们总是缓存上次的列表内容到本地,下次加载时,我们先从本地读取缓存,并同时发起请求到服务器获取最新列表。

web的首屏加载优化相关推荐

  1. 记前端项目首屏加载优化(网络篇)

    继之前的一篇<记前端项目首屏加载优化(打包篇)>之后,这次来讲一讲我的首屏加载在网络方面的优化?. 写在前面 资源加载是一个网站的展示在用户浏览器的必经之路,资源的请求次数和响应时间决定了 ...

  2. vue spa php,在Vue中有关SPA首屏加载优化(详细教程)

    本篇文章主要介绍了浅谈Vue SPA 首屏加载优化实践,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 写在前面 本文记录笔者在Vue SPA项目首屏加载优化过程中遇到的一 ...

  3. 单页应用的优缺点,单页应用首屏加载优化、小程序首次启动速度优化

    单页应用的优缺点 单页应用,简称(Single Page Application)是指整个应用只一个HTML页面,所有的功能和交互都在这个页面完成,利用JavaScript动态改变HTML内容. 优点 ...

  4. vue项目首屏加载优化

    1.将第三方资源使用cdn引入 将项目中用到的一些第三方库通过cdn的方式引入的话,在打包的时候就不需要对第三方库进行打包,自然就减小了包的大小,首屏加载的时候所加载的内容也就减少了,加载时间就少了. ...

  5. Vue 首屏加载优化(dist 打包文件从 5M+ 缩减到 324kb)

    最近在做 Vue 项目的首屏优化,效果不错,在这里将经验分享给大家,总的优化措施是以下四点. 优化方式1:将项目中用到的图片移动到百度云文件存储 优化方式2:使用路由懒加载 优化方式3:关闭 sour ...

  6. webpack优化系列七:首屏加载优化

    前端项目打包之后默认情况下的配置文件较大,部署后首次加载反应较慢,甚至会出现几秒白屏的现象,对于用户的体验感不是很好,所以需要进一步优化一下: 本文主要记录一下本人自己的理解,如果其他方案可评论指导. ...

  7. angular 首屏加载优化_[转]Angular4首页加载慢优化之路

    Angular是一个比较完善的前端MVC框架,包含了模板,数据双向绑定,路由,服务,过滤器,依赖注入等等所有的功能.在Web开发前后端流行的今天,我们在某个项目中也尝试使用该框架. 很快按照官网上的例 ...

  8. vue路由懒加载_优化vue项目的首屏加载速度

    最近使用vue-cli3构建了一个小型的博客系统,完工之后,build打包出来发现一个chunk-vendors包就有1.1m,部署上去之后,访问的时候,首屏加载非常慢.居然需要21s,体验极差. 这 ...

  9. nginx加载图片慢_优化vue项目的首屏加载速度

    最近使用vue-cli3构建了一个小型的博客系统,完工之后,build打包出来发现一个chunk-vendors包就有1.1m,部署上去之后,访问的时候,首屏加载非常慢.居然需要21s,体验极差. 这 ...

最新文章

  1. 文本类控件(EditView 的介绍)
  2. 在域模式中控制客户端运行和禁止软件
  3. 查看文件的MD5/SHA1效验值
  4. oracle忘记口令
  5. jenkins自动化部署vue
  6. 万能点位图软件_红色网格衣+很多漂亮的花边像素图,绣手帕花边的十字绣图...
  7. Java将一个正整数进行因数分解
  8. nginx虚拟域名配置
  9. JS拖动技术--- 关于setCapture (转自 剑胆琴心-.Net学习笔记)
  10. ArcSDE:C#创建SDE要素数据集
  11. 基于Python和MySQL的学生信息管理系统
  12. 斯坦福NLP名课带学详解 | CS224n 第5讲 - 句法分析与依存解析(NLP通关指南·完结)
  13. 卡巴斯基7.0反病毒一年激活码免费领取(官方活动,现已停止)
  14. 从大公司年薪30万,跳槽到小公司月薪8千,是什么体验?
  15. 1、ruby语法抄写练习
  16. vi编辑器基础命令合集与yim初级使用
  17. Linux系统编程——Daemon进程
  18. 使用脚本批量上传内购商品
  19. 英特尔Thunderbolt(雷电)控制器驱动
  20. 上半年要完成的博客55

热门文章

  1. 冰刃-删除顽固文件的利器!
  2. 安卓手机去水印哪个好用
  3. canvas生成二维码海报-可配置
  4. 获取手机相册中照片的地址,保存在手机中的URL(Swift 代码)
  5. Threats to Validity_追逐梦想的顾咏丰_新浪博客
  6. 03 注册Gitee账号及设置公钥
  7. PayPal 注册和使用详解
  8. python画钟表代码_Python技能操作5:用代码做个能挂墙上的大钟表
  9. python+selenium移动滑块代码【杭州多测师_王sir】【杭州多测师】
  10. 工作多年,对程序员“未来”的一些看法