浏览器的加载与页面性能优化

一、现有知识
总结起来主要有以下几点:
1.带宽:使用CDN,压缩js、css,图片优化
2.HTTP优化:减少转向,减少请求数,缓存,尽早Flush,使用gzip,减少cookie,使用GET
3.DNS优化:减少域名解析时间,增多域名提高并发
4.JavaScript:放页面底部,defer/async
5.CSS:放页面头部,避免@import
6.其它:预加载

DNS
为了应对DNS查询的延迟问题,一些新的浏览器会缓存或预解析DNS,如当Chrome访问google页面的搜索结果时,它会取出链接中的域名进行预解析
当然,Chrome并不是每次都将页面中的所有链接的域名都拿来预解析,为了既提升用户体验又不会对DNS造成太大负担,Chrome做了很多细节的优化,如通过学习用户之前的行为来进行判断
Chrome在启动时还会预先解析用户常去的网站,具体可以参考DNS Prefetching,当前Chrome中的DNS缓存情况可以通过net-internals页面来察看为了帮助浏览器更好地进行DNS的预解析,可以在html中加上以下这句标签来提示浏览器

<link rel="dns-prefetch" href="//HOSTNAME.com">


HEADER 优化
1.header大小
header的大小一般会有500 多字节,cookie内容较多的情况下甚至可以达到1k以上,而目前一般宽带都是上传速度慢过下载速度,所以如果小文件多时,甚至会出现页面性能瓶颈出在用户上传速度上的情况,所以缩小header体积是很有必要的,尤其是对不需要cookie的静态文件上,最好将这些静态文件放到另一个域名上

将静态文件放到另一个域名上会出现的现象是,一旦静态文件的域名出现问题就会对页面加载造成严重影响,尤其是放到顶部的js,如果它的加载受阻会导致页面展现长时间空白,所以对于流量大且内容简单的首页,最好使用内嵌的js和css

2.header的扩展属性
header中有些扩展属性可以用来保护站点,了解它们是有益处的

X-Frame-Options
这个属性可以避免网站被使用frame、iframe的方式嵌入,解决使用js判断会被var location;破解的问题,IE8、Firefox3.6、Chrome4以上的版本都支持
X-XSS-Protection
这是IE8引入的扩展header,在默认情况下IE8会自动拦截明显的XSS攻击,如query中写script标签并在返回的内容中包含这项标签,如果需要禁止可以将它的值设为0,因为这个XSS过滤有可能导致问题,如IE8 XSS Filter Bug
X-Requested-With
用来标识Ajax请求,大部分js框架都会加入这个header
X-Content-Type-Options
如果是html内容的文件,即使用Content-Type: text/plain;的header,IE仍然会识别成html来显示,为了避免它所带来的安全隐患,在IE8中可以通过在header中设置X-Content-Type-Options: nosniff来关闭它的自动识别功能

摘选自:http://www.baiduux.com/blog/2011/02/15/browser-loading/
觉得有用,所以保存下来,有兴趣的也可以看看啊。呵呵