Web前端优化面试要点

匿名网友 匿名网友 发布于: 2015-10-29 00:00:00
阅读 162 收藏 0 点赞 0 评论 0

1. CSS Sprites 合成图片

优点:减少HTTP请求次数,图片合成后总大小变小,加快加载

缺点:不利于后期修改,每次修改单个图片都要重新合成一次;不利于代码语义化

折中:按照使用频率、功能类型的不同合成几个级别不同的图片

2. 合并css, js文件

优点:减少HTTP请求次数,加快加载

缺点:牺牲了代码组织结构,使单个文件内部混乱

折中:适当分开,尽量合并

3. 压缩文件大小

代码文件:用压缩工具压缩,去掉空白、无用、重复代码; 图片文件:降低分辨率、改变格式(PNG优先)、压缩图片质量等,也可以使用专业的压缩工具

优点:缩小体积,加快加载

缺点:没有明显缺点,如果一定要说的话,压缩后的代码可读性差(不过一般都会留一份压缩前的源码)

4. 结构(HTML)样式(CSS)行为(JS)分离

优点:

  • 使项目结构更清晰,易于维护,易于对各部分进行单独的处理而不影响其他部分。
  • 提高代码可复用性
  • 浏览器会单独缓存css, js文件,加快加载

缺点:有缺点吗?对了,demo之类的小项目可以不用分离了,多此一举

5. CSS放在页面开头(<head>内部),JS放在页面末尾(</body>之前)

DOM树的生成是受JS代码执行的影响的,JS代码会“阻塞”页面的渲染,详细请读《JavaScript权威指南》(P320-P322)

6. 使用CDN(内容发布网络)

优点:CDN会帮你找到距离用户电脑最近的服务器上的资源文件,更够更快速地传到相应的浏览器上。

缺点:

  • 不利于离线开发,也无法对远程的资源进行控制(比如添加一些自定义的修改)
  • 有些CDN服务在某些国家和地区无法访问,比如在天朝访问使用了google cdn的网站时就会出现很多问题

7. 尽量减少浏览器reflow

这里设计关于Reflow和Repaint的知识。Reflow简单来讲就是浏览器重新渲染页面布局,这可能是由于一个很小的节点的改变引发的,作用很小,代价很大,所以应尽量避免。

措施:

  • 减小不必要的DOM树深度,也就是说,不必要的话,你的DOM树不要太多层了,其中一层的布局变化将引起整棵树的重新渲染。
  • 尽量使用对class进行操作来动态改变元素样式,而不是直接对元素css进行更改。
  • 需要使用动画的元素应将其position设置为absolute或者fixed,使其脱离文档流。
  • 避免过于复杂的css选择器,尤其要避免使用过多后代选择器,太多层CPU开销很大。
  • 不要用表格进行页面布局,表格式牵一发动全身的布局方式。
  • 不要用css表达式

8. 使用<link>,避免使用@import加载css

优点:@import的css文件无法同步并行加载,必须等一个加载完才能加载下一个,势必造成速度问题,而link引用的多个stylesheet则可以同步并行加载,速度更快

缺点:暂时没想到

9. 尽量少使用css filter达到滤镜效果,可以用png图片

10. 能用HTML做的事,不要让css、js来做,能用css做的事,不要让js来做

11. 使用iconfont代替图片图标

评论列表
文章目录