提高网页加载速度的十个窍门

C M Pandey 原做,受权 New Frontend 翻译。javascript

在这篇文章里,我会跟你们分享我是如何让本身的做品集网站在 0.8 秒内加载完成的。css

1. 不要使用太大的 DOM 树

个人做品集网站包含 487 个 DOM 元素,DOM 树的深度是 13,每层最多 20 个子元素。html

太大的 DOM 树会拖慢网页:java

  • 内存

    在过大的 DOM 树上应用查询选择器(好比 document.querySelectorAll('li'))会保存多个节点的引用,这可能占用大量设备内存。git

  • 网络效能和加载速度

    巨大的 DOM 树包含许多节点(有些节点在初次加载时不可见),这会拖慢加载速度,消耗用户的网络流量。github

  • 用户或脚本与网页产生交互时的运行时性能

    此时浏览器须要从新计算节点的位置和样式,所以 DOM 树过大时渲染会变慢。若是样式规则很复杂,渲染性能会雪上加霜。web

2. 不要使用巨大的网络载荷

个人做品集网站的网络载荷(payload)大小只有 764 KB。浏览器

你的网站的网络载荷大小应该低于 1600 KB。
为了达成这一目标,你能够从如下几个方面着手:服务器

  • 延迟请求,按需加载。
  • 极简化(minify)、压缩(compress)网络载荷。
  • 将 JPEG 图像的压缩级别设置为 85。

永远不要忘记,更大的网络载荷会带来更多的流量成本。网络

3. 不要使用 GIF

静态图像用 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>

4. 预加载关键请求

假设页面正加载一个 JS 文件,这个 JS 文件自己会获取另外一个 JS 文件和一个 CSS 文件,那么直到这些资源下载、解析、执行完毕前,页面都不会完整显示。

若是浏览器可以在更早的时候发起这些请求,就能节省许多时间。很幸运,预加载连接能够作到这一点。

<link rel="preload" href="style.css" as="style">

5. 少用重定向

重定向会拖慢网页的加载速度。浏览器请求某个重定向资源时,服务器会返回一个 HTTP 响应。接着浏览器必须发起另外一个 HTTP 请求,重新的地址获取资源。这些额外的网络往返会拖慢资源的加载速度,可能会拖慢几百毫秒。

与其将移动端用户重定向到移动端版本的页面,不如将网站从新设计成响应式。

6. 预链接重要的第三方站点

使用 preconnect 告诉浏览器提前和重要的第三方站点创建链接。

<link rel="preconnect" href="https://www.google.com">

以上代码会和站点创建链接,并告知浏览器你但愿在尽量早的时候启动这一进程。

7. 使用高效的图像编码

JPEG 图像的压缩级别设为 85 就已经足够好了。你还可使用多种方式优化图像大小:

  • 压缩图像。
  • 使用优化图像的 CDN。
  • 避免使用 GIF。
  • 响应式图像。
  • 按需加载图像。

8. 极简化 JavaScript 文件

极简化指移除空格和非必需的代码以建立更小的代码文件的过程。

极简化 JavaScript 文件能够缩小载荷,节省解析时间。

JavaScript Minifier 是一个能够极简化 JavaScript 的在线工具。

9. 极简化 CSS 文件。

相比其余文件,CSS 文件的空格更多。极简化确定能省下一些字节。再好比颜色值能够极简化成等价的简写形式,好比 #000000#000 是等价的。

CSS Minifier 是一个能够极简化 CSS 的在线工具。

10. 调整图像分辨率

我打赌在网站优化的建议中,这是最常提到的一条。由于图像的大小通常来讲要比任何脚本文件大不少,因此尽可能避免使用分辨率过大的图像。

你永远不该该上传分辨率大于屏幕渲染尺寸的图像,这毫无心义。

你能够直接修改图像的分辨率,或者使用:

  • 响应式图像。
  • 支持优化图像的 CDN。
  • SVG 图标。
相关文章
相关标签/搜索