JS基础——浅谈前端页面渲染和性能优化
加载html中的静态资源
浏览器渲染页面的过程
- 根据HTML 结构生成DOM Tree
- 根据CSS 生成 CSSOM
- 将DOM和CSSOM结合生成RenderTree
- 浏览器根据RenderTree开始渲染和展示
- 遇到<script> 时,会执行并阻塞渲染
window.onload // 页面的全部资源全部渲染完
documnet.addEventListener('DOMContentLoaded',function(){
// dom 渲染完即可执行,此时图片和视频可能§§还没加载完
})
性能优化
原则
多使用内存、缓存或者其他方法减少CPU计算、减少网络请求
解决
加载资源优化
- 静态资源的压缩合并(webpack 构建工具)
- 静态资源缓存(内容改变,链接名字才会改变)
- 使用CDN让资源加载更快(内容分发网络)
- 使用SSR后端渲染,数据直接输出到html中(例如react 的renderToString)
渲染优化
CSS放前面,JS放后面
懒加载(图片懒加载、下拉加载更多)
<img src="preview.png" date-realsrc="abc.png"> //date-realsrc 真正的图片
<script type="text/javascript">
var img1=document.getElementsByTagName('img')[0];
img1.src=img1.getAttribute('date-realsrc')
</script>
减少dom查询,对dom查询做缓存
减少dom操作,多个操作尽量合并到一起
var frag = document.createDocumentFragment();不属于主dom中,通常用于片段的处理
案例:
let ul = document.querySelector(`[data-uid="ul"]`),
docfrag = document.createDocumentFragment(); const browserList = [
"Internet Explorer",
"Mozilla Firefox",
"Safari",
"Chrome",
"Opera"
]; browserList.forEach((e) => {
let li = document.createElement("li");
li.textContent = e;
docfrag.appendChild(li);
});
ul.appendChild(docfrag);
事件节流
var searchTimeout = null;
$('#input').on('keyup', function(event) {
//每次keyup时直接取消上次计时器,只有当keyup超过100ms时才执行handler
clearTimeout(searchTimeout);
searchTimeout = setTimeout(function() {
handler();
}, 100);
});
尽早执行操作(DOMContentLoaded)
window.addEventListener('load',function(){
// 页面的全部资源全部渲染完
............
})
documnet.addEventListener('DOMContentLoaded',function(){
.....
// dom 渲染完即可执行,此时图片和视频可能§§还没加载完
})
JS基础——浅谈前端页面渲染和性能优化的更多相关文章
- 前端性能优化--为什么DOM操作慢? 浅谈DOM的操作以及性能优化问题-重绘重排 为什么要减少DOM操作 为什么要减少操作DOM
前端性能优化--为什么DOM操作慢? 作为一个前端,不能不考虑性能问题.对于大多数前端来说,性能优化的方法可能包括以下这些: 减少HTTP请求(合并css.js,雪碧图/base64图片) 压缩( ...
- [原创]浅谈H5页面性能优化方法
[原创]浅谈H5页面性能优化方法 前阶段公司H5页面性能测试,其中测试时也发现了一些性能瓶颈问题,接下来我们在来谈谈H5页面性能优化,仅仅是一些常用H5页面性能优化措施,其实和Web页面性能优化思路大 ...
- [原创]浅谈H5页面性能测试
[原创]浅谈H5页面性能测试 H5页面我想各位都不陌生,随着移动互联网兴起,不管是App,还是H5都火起来了,最突出的2个表现是ios/android/前端等工程师薪水大涨,尤其是资深前端工程师40W ...
- 浅谈前端性能优化(PC版)
前端的性能优化是一个很宽泛的概念,最终目的都是为了提升用户体验,改善页面性能.面试的时候经常会遇到问谈谈性能优化的手段,这个我分几大部分来概述,具体细节需要自己再针对性的去搜索,只是提供一个索引(太多 ...
- [原创]浅谈H5页面测试介绍
[原创]浅谈H5页面测试介绍 目前移动互联网非常火热,除了各种App,H5也是非常热,由于H5跨平台,且版本更新容易,做为引流或获客是非常好的一种简单低成本平台:今天来谈谈H5页面测试都要测试什么? ...
- 浅谈B+树索引的分裂优化(转)
http://www.tamabc.com/article/85038.html 从MySQL Bug#67718浅谈B+树索引的分裂优化 原文链接:http://hedengcheng.com/ ...
- 浅谈Spark应用程序的性能调优
浅谈Spark应用程序的性能调优 :http://geek.csdn.net/news/detail/51819 下面列出的这些API会导致Shuffle操作,是数据倾斜可能发生的关键点所在 1. g ...
- 浅谈Unity的渲染优化(1): 性能分析和瓶颈判断(上篇)
http://www.taidous.com/article-667-1.html 前言 首先,这个系列文章做个大致的介绍,题目"浅谈Unity",因为公司和国内大部分3D手游开发 ...
- Js之浅谈dom操作
JavaScript之浅谈dom操作 1.理解dom: DOM(Document Object Model ,文档对象模型)一种独立于语言,用于操作xml,html文档的应用编程接口. 怎么说,我从两 ...
随机推荐
- win+R下的命令
1.inetmgr 打开IIS 2.taskmgr 打开任务管理器 3.calc 打开计算器 4.msconfig 系统启动配置 5.mstsc 远程桌面 6.systeminfo 查看电脑信息 7 ...
- js带文字的圆随机运动
首先是html代码(其实就只有一个画布,记得要把外部js引入写在body底部 <!doctype html> <html> <head> <meta http ...
- App Inventor 网络资源及推荐书目
Ai2服务器 官方服务器:http://ai2.appinventor.edu/ 官方备用服务器:(大陆可用):http://contest.appinventor.mit.edu/ 国内个人服务器: ...
- VC简单嵌入汇编
转自:http://blog.csdn.net/arcsinsin/article/details/8126473 内嵌汇编的使用方法是: __asm { 语句 } 你可以把它插入程序中 ...
- 使用Unicode写文本文件:一个简单类的示例
参考了http://forums.codeguru.com/showthread.php?457106-Unicode-text-file示例. class WOFSTREAM : public st ...
- java原生文件打包
一.背景 前端时间,自己做的项目需要打包功能,不想再引外部的jar包 便用java.util.zip做了下该功能 二.适用场景 生成多个word.excel.xml等文件,并要求打包下载的情形 例:项 ...
- VB6.0环境下的CATIA二次开发简介
CATIA作为CAD/CAE/CAM/PDM一体化的软件,广泛用于航空航天.汽车.船舶及电子工业,尤其在航空航天业,有八成以上厂商使用CATIA的市场[11].然而由于使用习惯和使用的侧重点不用,功能 ...
- Selenium2学习(三)-- 八种元素元素定位(Firebug和firepath)
前言 自动化只要掌握四步操作:获取元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告.本篇主要讲如何用firefox辅助工具进行元素定位.元素定位在这四个环节中是至关 ...
- jquery表单
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...
- O/S-Error: (OS 23) Data error (cyclic redundancy check)问题处理
RMAN-03002: backup plus archivelog 命令 (在 08/24/2015 03:31:00 上) 失败ORA-19501: 文件 "XXXXXX.DBF&quo ...