文本内容、图片内容的优化都是基于自身大小的,但有一个更根底的计划能够施行,就是缩小这些资源的下载频率。

缩小资源个数,就能够缩小HTTP申请个数。

合并文本资源

每个文件都须要发动一个HTTP申请,每个申请会耗费肯定的工夫,合并这些文件就能晋升页面的加载速度。

CSS比拟非凡,是层叠款式,同一个选择器不会报错和抛出异样,而是能失常运行,后者笼罩前者。但有时候这个会跟咱们预期不统一,所以倡议给一些特地的款式加特定的类名。如下:

h2 { font-size: 1em; color: #000080; } /* master stylesheet */ h2 { font-size: 2em; color: #ff0000; } /* Marketing stylesheet(防止应用) */ section.product h2 { font-size: 2em; color: #ff0000; } /* Marketing stylesheet(举荐) */

合并文本资源对于缩小HTTP申请数很无效,不过这样做的时候也要小心,前面会介绍一些注意事项。

合并图片资源

图片和文本一样,也能够通过合并的形式来缩小HTTP申请数。

尽管这个办法能够实用于任意图片,但咱们最罕用的还是合并小图标,为这些小图标发动多个HTTP申请切实是一种节约。

咱们能够用CSS的background-position属性来展现相应的图片——俗称"精灵图"。CSS重定位十分疾速、无缝,不必放心抖动问题。

你可能会有一系列的社交网站图标,比起下载3个独自的图片,合并成一张图片会更适合,如下:

以下是CSS的示例:

a.facebook {  display: inline-block;  width: 64px;  height: 64px;  background-image: url("socialmediaicons.png");  background-position: 0px 0px;}a.twitter {  display: inline-block;  width: 64px;  height: 64px;  background-image: url("socialmediaicons.png");  background-position: -64px 0px;}a.pinterest {  display: inline-block;  width: 64px;  height: 64px;  background-image: url("socialmediaicons.png");  background-position: -128px 0px;}

"facebook"的类里的"background-position"属性实际上是能够省略的,但此处为了放弃一致性,所以保留。

注意事项

  • 下面提到的合并文本和图片资源,在HTTP/2协定下,可能成果没有预期的那样,因为HTTP/2的申请更快,如果想理解更具体的,能够参考 https://developers.google.com...
  • 如果合并的资源外面蕴含一个频繁改变的动静资源,比方node_modules打包成的vendor.js,如果蕴含了一个首页的js文件,而首页改变频繁,会导致缓存生效,每次都要从新下载一遍整个vendor.js

JavaScript的地位和内联脚本(Inline Push)

咱们假如所有的CSS和JavaScript资源都是存在于独自的文件,这也是最优的做法。脚本的加载是个微小简单的流程,详情能够参考这篇文章 Deep Dive Into the Murky Waters of Script Loading。有以下两个点值得注意:

脚本的地位

  • 尽可能地把脚本放在body的完结标签上方,比起放head标签,这样不会阻塞页面渲染。
  • 如果脚本须要操纵初始dom,或者在渲染期间提供一些函数,这类脚本能够独自放在head标签内引入,常见的有:window.onerror的事件绑定、反爬虫、性能监控等
  • 最高效的资源加载程序,也被称为要害渲染门路(Critical Rendering Path),详情能够参考:Bits of Code。

代码的地位

  • 尽可能的防止将一个JavaScript拆成2个文件,最好的做法是把这部分拆分的代码间接内嵌在HTML文件中,成为内联脚本(Inline Push).
  • 当你想在渲染的时候展现一些已有的数据(例如:工夫等),能够通过内联脚本,这样不必期待整个页面加载完就能显示进去。
  • 内联脚本次要是解决两个问题:

    • 为了加载一小段代码,而发动一个HTTP申请的节约
    • 让一些代码在渲染初期就能执行
<h1>Our Site</h1> <h2 id="greethead">, and welcome to Our Site!</h2> <script>//insert time of day greeting from computer timevar hr = new Date().getHours();var greeting = "Good morning";if (hr > 11) {    greeting = "Good afternoon";}if (hr > 17) {    greeting = "Good evening";}h2 = document.getElementById("greethead");h2.innerHTML = greeting + h2.innerHTML;</script> <p>Blah blah blah</p>

总结

本文次要介绍了升高HTTP申请次数的一些办法,思考了文本和图片两种资源。缩小与服务器的交互次数,能够帮咱们节省时间,减速页面的加载,让用户能够更快的看到内容。

参考

https://developers.google.com...