特别是在手机端访问,用户第一次打开网站,如果得到反馈的时间太久,用户很可能在页面完成加载之前就离开,不会再次访问。所以,网站、web App,提高首次访问的加载速度就显得特别重要了。第一次加载速度是用"首字节的时间"测量的,即从用户点击访问到从服务器返回第一个字节所用的时间,绝大多数情况下,真正的原因在于前端,PageSpeed YSlow和其他无数的工具和服务用来解决这些问题。
解析域名à发起请求à下载响应à渲染页面
当浏览器要渲染页面的时候,如果页面中有CSS或脚本外链,浏览器会等到这些文件加载和解析完再渲染页面。
以下是可能的原因
HTTP连接数à接连不断请求很多次小文件比一次请求一个大文件慢很多,即使现代浏览器已经支持并行下载,但是每次请求还是需要承担HTTP层面的开销,创建新请求不仅需要新的开销,还需要耗费CPU和内存,所以,并行下载两个文件的时间并不等于串行下载时速度的两倍。而对于较大文件,比如一些比较大的图片,情况有些不同,因为这个时候,下载占据了请求时间的绝大部分,所以,并行下载的效果会更好。出于这个原因,在网站上将图片与其他资源置于不同的域下是合理的,雅虎的Steve Souders和YSlow团队发现,为当前域创建两个别名,能允许更多的下载并行,会使大文件下载的性能明显改善。使用至少两个最多五个域名是YSlow的经验法则。
另一个需要考虑的是浏览器的cookie,如果一个cookie与请求的域名或路径相匹配,它会伴随着每次请求发送(上传),所以,如果你的域名下有几千字节的cookie,那么此后发送到这个域的每次请求都将把这些字节包含在请求头里,然后发送(这些字节还是未压缩状态)。服务器在读取请求体之前读取这些cookie。cookie可以把一个很小的请求变得很大。
总的字节数à这个原因是显而易见的,被下载的资源的大小
等待时的渲染阻塞à有时候,并不是真的提升性能,但是有一些小技巧,可以让用户觉得网页加载的很快。例如,不管什么时候,给用户一个及时的反馈,让用户知道页面在加载,链接还在,没有断开。
延迟à一个典型的家庭网络链接可能有15ms的网络延迟,一个典型的3G链接有100ms的延迟,3G网络与家庭网络相比,不但下载速度慢了很多,延时也高很多。
缓存能力差à正确的缓存设置,确保浏览器最终不会重复获取已有的资源,是解决这个问题的关键。
目前移动类别包含两条建议:延迟JavaScript解析和使首页的重定向可缓存
?
<link rel="stylesheet" media="only screen and (max-width: 800px)" href=""table.css">
但如果将媒体布局置于css文件内部,把不同布局的代码合并到一个文件中,一次来减少http请求的次数
@media only screen and (max-width: 800) {}
原文:http://www.cnblogs.com/1000px/p/4720040.html