减少DNS查找(Reduce DNS Lookups)
通常在访问一个页面的时候,都是通过属于页面的主机名来访问,但是实际上访问页面是要访问对应的IP地址的,所以在访问域名到查找对应的IP地址的时候,会先通过DNS域名系统,将对应的IP地址找到并返回浏览器,而DNS本身也有时间成本,所以减少DNS查找,直接访问IP地址的话,可以提高访问速度.
使用CDN(Use a Content Delivery Network)
前端页面花费的响应时间大部分是在下载图片,样式,脚本,flash等,如果将这些内容都放在同一个服务器上面,那么在下载资源的时候,其他资源就要排队等待,所以就会造成响应时间加长,如果将这些资源分布到不同的服务器上面,那么在下载的时候就可以减少等待的时间,即减少响应时间,而CDN是一群不同地点的服务器,可以更高效地分发内容到用户,所以使用CDN可以有效的减少响应时间,获得更好的页面体验效果.
加Expires或Cache-Control头部(Add an Expires or a Cache-Control Header)
页面越复杂的时候,包含的样式,脚本等资源会越多,那么在第一次瞎子的时候可能会发送多个请求,但是再之后重新访问这个页面的时候,就可以使用Expires将这些组件缓存起来,后续直接读取缓存,避免重复的访问服务器下载同样的资源,可以减少http请求数,加快页面加载速度,Cache-Control也是同样的效果.
AJAX请求用get(Use GET for AJAX Requests)
XMLHttpRequest在POST请求的时候浏览器会分成两步:首先发送头部,然后发送数据.所以用GET请求,只用一个TCP来发送到服务器,所以如果不是提交数据到服务器的话,就用GET来请求,提交数据到服务器就用POST请求.
避免空src或href的图片(Avoid empty src or href)
页面中含有空src属性的图片的时候,浏览器会想服务器发送请求,这回导致发送大量意外之外的流量,会削弱服务器.同时也会浪费服务器计算周期取生成不会被浏览的页面,也会有可能破坏用户数据.这种行为的根源是由于url解析发生在浏览器,RFC 3986定义了这种行为,空字符串被当作相对路径来正确解析,所以会导致有不必要的流量产生.
五. JAVASCRIPT
将脚本放到底部(Put Scripts at the Bottom)
在下载组件的时候可能会阻塞了并行下载,如果图片,脚本等资源分散在不同服务器,那么可以并行下载多个图片,但当脚本在下载,浏览器不会再下载其他组件,即使在不同于域名下,所以将脚本放到底部可以减少阻塞.提高下载效率.
使用外部JS和CSS(Make JavaScript and CSS External)
一般情况下,使用外部文件会加快页面,因为JS和CSS文件会被浏览器缓存,如果是内连的JS和CSS的话每次HTML文档下载的时候都被下载.对多个页面的首页来说,可以通过技术减少http请求.在首页用内连,初始化后动态加载外部文件,接下来的页面如果可以用到这些文件,就可以使用缓存了,减少http文档的大小.
压缩JS和CSS(Minify JavaScript and CSS)
压缩就是删除代码中不必要的字符来减少文件的大小,提高下载的速度,所以使用压缩JS和CSS,页面在下载的时候就会比原文件下载的少,访问速度回加快.
不要在html中缩放图片(Do Not Scale Images in HTML)
不要在图片中设置宽高来用比需要大很多的图片,如果需要就直接从服务器中请求,或者就用需要图片自身的宽高.避免在请求的时候以大于需要的图片来请求,影响下载资源的大小.
favicon.ico小且缓存(Make favicon.ico Small and Cacheable)
favicon.ico是服务器根路径的图片,即使本身不想请求它,浏览器仍然会请求它,所以根据之前的规则,最好就是在请求它的时候不要响应404,还有就是每次请求favicon.ico都会带上cookie,并且它也会影响下载顺序,可以通过设置Expires头部,使得每次都是直接从缓存中读取,不必要每次都是请求.