# 前端性能优化方案
前端资源比较庞大,包括`HTML`、`CSS`、`JavaScript`、`Image`、`Flash`、`Media`、`Font`、`Doc`等等,前端优化相对比较复杂,对于各种资源的优化都有不同的方式.按粒度大致可以分为两类,第一类是页面级别的优化,例如减小`HTTP`请求数、脚本的无阻塞加载、内联脚本的位置优化等,第二类则是代码级别的优化,例如`JavaScript`中的`DOM`操作优化、图片优化以及`HTML`结构优化等等。在用户角度前端优化可以让页面加载得更快,对用户的操作响应得更及时,能够给用户提供更为友好的体验,在服务商角度前端优化能够减少页面请求数,减小请求所占带宽,能够节省服务器资源。
## 减少HTTP请求
加载前端的大部分时间在于下载各种资源,浏览器对于同一个服务器的`HTTP`请求连接池数量也是有限的,对于过多的请求需要排队等候。最小化`HTTP`请求减少请求次数可以防止`HTTP`连接池被占满,同时也能避免过多`HTTP`链接时的`TCP`握手造成的时间消耗。
### CSS Sprite
`CSS Sprite`也就是俗称的雪碧图,将多张图片合并到一张图片中,可以减少图片的数量,此外由于合并图片相对分开的图片减少了存储信息的开销如颜色表和格式信息等,合并图片后的大小比分开的图片的大小的总和要趋于更小。
当然如果合并图片时有大量空白来分隔原来的单个图片那么其大小会趋于更大。使用雪碧图,需要使用`CSS`的`background-image`和`background-position`属性显示所需的图像段。
### Image maps
假如网站有很多带链接的图片例如地图应用等,那么图片映射`image maps`将是一个很好的选择,`image maps`允许在单张图片上有很多带链接的图片,通过`