C M Pandey 原做,受权 New Frontend 翻译。javascript
在这篇文章里,我会跟你们分享我是如何让本身的做品集网站在 0.8 秒内加载完成的。css
个人做品集网站包含 487 个 DOM 元素,DOM 树的深度是 13,每层最多 20 个子元素。html
太大的 DOM 树会拖慢网页:java
在过大的 DOM 树上应用查询选择器(好比 document.querySelectorAll('li')
)会保存多个节点的引用,这可能占用大量设备内存。git
巨大的 DOM 树包含许多节点(有些节点在初次加载时不可见),这会拖慢加载速度,消耗用户的网络流量。github
此时浏览器须要从新计算节点的位置和样式,所以 DOM 树过大时渲染会变慢。若是样式规则很复杂,渲染性能会雪上加霜。web
个人做品集网站的网络载荷(payload)大小只有 764 KB。浏览器
你的网站的网络载荷大小应该低于 1600 KB。
为了达成这一目标,你能够从如下几个方面着手:服务器
永远不要忘记,更大的网络载荷会带来更多的流量成本。网络
静态图像用 PNG 或 WebP。动画内容考虑使用 MPEG4 或 WebM 视频格式,GIF 图像存储效率低、显示效果差。
你也许会说你须要:
HTML5 的 video
标签彻底能够实现这些效果:
<video autoplay loop muted playsinline> <source src="my-animation.webm" type="video/webm"> <source src="my-animation.mp4" type="video/mp4"> </video>
假设页面正加载一个 JS 文件,这个 JS 文件自己会获取另外一个 JS 文件和一个 CSS 文件,那么直到这些资源下载、解析、执行完毕前,页面都不会完整显示。
若是浏览器可以在更早的时候发起这些请求,就能节省许多时间。很幸运,预加载连接能够作到这一点。
<link rel="preload" href="style.css" as="style">
重定向会拖慢网页的加载速度。浏览器请求某个重定向资源时,服务器会返回一个 HTTP 响应。接着浏览器必须发起另外一个 HTTP 请求,重新的地址获取资源。这些额外的网络往返会拖慢资源的加载速度,可能会拖慢几百毫秒。
与其将移动端用户重定向到移动端版本的页面,不如将网站从新设计成响应式。
使用 preconnect
告诉浏览器提前和重要的第三方站点创建链接。
<link rel="preconnect" href="https://www.google.com">
以上代码会和站点创建链接,并告知浏览器你但愿在尽量早的时候启动这一进程。
JPEG 图像的压缩级别设为 85 就已经足够好了。你还可使用多种方式优化图像大小:
极简化指移除空格和非必需的代码以建立更小的代码文件的过程。
极简化 JavaScript 文件能够缩小载荷,节省解析时间。
JavaScript Minifier 是一个能够极简化 JavaScript 的在线工具。
相比其余文件,CSS 文件的空格更多。极简化确定能省下一些字节。再好比颜色值能够极简化成等价的简写形式,好比 #000000
和 #000
是等价的。
CSS Minifier 是一个能够极简化 CSS 的在线工具。
我打赌在网站优化的建议中,这是最常提到的一条。由于图像的大小通常来讲要比任何脚本文件大不少,因此尽可能避免使用分辨率过大的图像。
你永远不该该上传分辨率大于屏幕渲染尺寸的图像,这毫无心义。
你能够直接修改图像的分辨率,或者使用: