1.公共库 合并 业务代码单独处理;(减少HTTP请求次数;尽量减少每个HTTP请求的大小,对文件压缩)
2.不同页面的js 单独打包
3.并发加载;外部资源并发请求,并发度收到浏览器域名限制,单个域名并发度是有限制的。
4;阻塞问题;
css在head中通过link方式引入的话会阻塞页面的渲染。
css不阻塞外部资源的加载 ,会阻塞js的执行。
js的引入会阻塞html文档的分析、页面的渲染。
js不阻塞外部资源的加载。
js顺序执行,阻塞后续js逻辑的执行。
5.避免页面中空的href 和 src
6.HTML 指定 Cache-Control 或 Expires; 设置之后 html会缓存起来;避免平凡像服务器发送请求;
<meta http-equiv="Cache-Control" content="max-age=7200">
<meta http-equiv="Expires" content="Mon,20Jul201623:00:00GMT">
7.合理设置 Etag 和 Last-Modified 合理设置 Etag 和 Last-Modified 使用浏览器缓存,对于未修改的文件,静态资源服务器会向浏览器端返回304,让浏览器从缓存中读取文件,减少 Web 资源下载的带宽消耗并降低服务器负载。
<meta http-equiv="last-modified" content="Sun,05 Nov 2017 13:45:57 GMT">
8.减少页面加载时间的方法(http://www.cnblogs.com/moneyss/p/7115874.html)
9.使用静态资源分域存放来增加下载并行数
浏览器在同一时刻向同一域名请求文件的并行下载数是有限的,因此可以利用多个域名的主机来存放不同的静态资源,增加页面加载时资源的并行下载数,缩短页面资源加载的时间;
10.使用 CDN Combo 下载传输内容
CDN Combo 是在 CDN 服务器端将多个文件请求打包成一个文件的形式来返回的技术,这样可以实现 HTTP 连接传输的一次性复用,减少浏览器的 HTTP 请求数,加快资源下载速度。例如同一个域名 CDN 服务器上的 a.js,b.js,c.js 就可以按如下方式在一个请求中下载。
<script src="//cdn.domain.com/path/a.js,b.js,c.js"></script>
11.使用可缓存的 AJAX
对于返回内容相同的请求,没必要每次都直接从服务端拉取,合理使用 AJAX 缓存能加快 AJAX 响应速度并减轻服务器压力。
$.ajax({
url : url,
type : 'get',
cache : true, //推荐使用缓存
data : {},
success (){//...},
error (){//...}
});
12.使用 GET 来完成 AJAX 请求
使用 XMLHttpRequest 时,浏览器中的 POST 方法会发起两次 TCP 数据包传输,首先发送文件头,然后发送 HTTP 正文数据。而使用 GET 时只发送头部,所以在拉取服务端数据时使用 GET 请求效率更高。
$.ajax({
url : url,
type : 'get', //推荐使用get完成请求
data : {},
success (){//...},
error(){//...}
});
13.减少 Cookie 的大小并进行 Cookie 隔离
HTTP 请求通常默认带上浏览器端的 Cookie 一起发送给服务器,所以在非必要的情况下,要尽量减少 Cookie 来减小 HTTP 请求的大小。对于静态资源,尽量使用不同的域名来存放,因为 Cookie 默认是不能跨域的,这样就做到了不同域名下静态资源请求的 Cookie 隔离。
14.缩小 favicon.ico 并缓存
有利于 favicon.ico 的重复加载,因为一般一个 Web 应用的 favicon.ico 是很少改变的。
15.推荐使用异步 JavaScript 资源
异步的 JavaScript 资源不会阻塞文档解析,所以允许在浏览器中优先渲染页面,延后加载脚本执行。例如 JavaScript 的引用可以如下设置,也可以使用模块化加载机制来实现。
<script src="main.js" defer=""></script>
<script src="main.js" async=""></script>
使用 async 时,加载和渲染后续文档元素的过程和 main.js 的加载与执行是并行的。使用 defer 时,加载后续文档元素的过程和 main.js 的加载是并行的,但是 main.js 的执行要在页面所有元素解析完成之后才开始执行。