前端之实际问题

在地址栏里输入一个URL,到这个页面呈现出来,中间会发生什么?

输入 URL 后,找到域名服务器 IP ,浏览器首先会寻找缓存,查看缓存记录。如果没有则查询DNS服务器,得到服务器IP地址后,发送http请求,并将这个 http 请求建立 TCP 链接,服务器解析请求返回html给浏览器,客户端解析HTML生成DOM树,然后解析CSS生成Render渲染树,最后构建布局树,含有元素的定位和几何信息。然后进行异步请求下载相应资源。最后GPU渲染画面。用户看到相应页面。

 

重构回流

重构:指的是改变元素的外观时所触发的浏览器行为,比如颜色、背景。不会引发页面的重新布局,不一定伴随着回流。

回流:浏览器为了重新渲染页面需要重新计算元素布局,开销大,回流可以理解为进行计算,避免元素的回流-->最好使其脱离文档流,就不会引起回流,比如设置position:absolute,或者display:none。

 

 

 

首页白屏

1、css文件加载需要一些时间,在加载的过程中页面是空白的。 解决:可以考虑将css代码前置和内联。

2、等待异步加载数据再渲染页面导致白屏。 解决:在首屏直接同步渲染html,后续的滚屏等再采用异步请求数据和渲染html。

3、首屏内联js的执行会阻塞页面的渲染。 解决:尽量不在首屏html代码中放置内联脚本。

首页白屏解决方案

1减少文件加载体积,如html压缩,js压缩

2加快js执行速度 比如常见的无限滚动的页面,可以使用js先渲染一个屏幕范围内的东西

3提供一些友好的交互,比如提供一些假的滚动条

4使用本地存储处理静态文件。

 

 

 

优化策略

(1) 减少http请求次数:CSS Sprites, JS、CSS源码压缩、图片大小控制合适;网页Gzip,CDN托管,data缓存 ,图片服务器。

(2) 前端模板 JS+数据,减少由于HTML标签导致的带宽浪费,前端用变量保存AJAX请求结果,每次操作本地变量,不用请求,减少请求次数

(3)用innerHTML代替DOM操作,减少DOM操作次数,优化javascript性能。

(4)当需要设置的样式很多时设置className而不是直接操作style。

(5)少用全局变量、缓存DOM节点查找的结果。减少IO读取操作。

(6)避免使用CSS Expression(css表达式)又称Dynamic properties(动态属性)。

(7)图片预加载,将样式表放在顶部,将脚本放在底部  加上时间戳

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值