前端性能优化

710 阅读4分钟

前端性能优化七大手段

  (1) 减少http请求次数:CSS Sprites, JS、CSS源码压缩、图片大小控制合适;网页Gzip,CDN托管,data缓存,图片服务器。

  (2) 前端模板 JS+数据,减少由于HTML标签导致的带宽浪费,前端用变量保存AJAX请求结果,每次操作本地变量,不用请求,减少请求次数

  (3) 用innerHTML代替DOM操作,减少DOM操作次数,优化javascript性能。

  (4) 当需要设置的样式很多时设置className而不是直接操作style。

  (5) 少用全局变量、缓存DOM节点查找的结果。减少IO读取操作。

  (6) 避免使用CSS Expression(css表达式)又称Dynamic properties(动态属性)。

  (7) 图片预加载,将样式表放在顶部,将脚本放在底部  加上时间戳。

如何对网站的文件和资源进行优化?

 1.文件合并
 2.文件最小化/文件压缩
 3.使用 CDN 托管
 4.缓存的使用(多个域名来提供缓存)

减少页面加载时间的方法

 1.优化图片 
 2.图像格式的选择(GIF:提供的颜色较少,可用在一些对颜色要求不高的地方) 
 3.优化CSS(压缩合并css,如margin-top,margin-left...) 
 4.网址后加斜杠(如www.campr.com/目录,会判断这个“目录是什么文件类型,或者是目录。) 
 5.标明高度和宽度(如果浏览器没有找到这两个参数,它需要一边下载图片一边计算大小,
   如果图片很多,浏览器需要不断地调整页面。这不但影响速度,也影响浏览体验。 
   当浏览器知道了高度和宽度参数后,即使图片暂时无法显示,页面上也会腾出图片的空位,
   然后继续加载后面的内容。从而加载时间快了,浏览体验也更好了。) 
 6.减少http请求(合并文件,合并图片)。

优雅降级和渐进增强

1.优雅降级:Web站点在所有新式浏览器中都能正常工作,如果用户使用的是老式浏览器,则代码会检查以确认它们是否能正常工作。由于IE独特的盒模型布局问题,针对不同版本的IE的hack实践过优雅降级了,为那些无法支持功能的浏览器增加候选方案,
使之在旧式浏览器上以某种形式降级体验却不至于完全失效.

2.渐进增强:从被所有浏览器支持的基本功能开始,逐步地添加那些只有新式浏览器才支持的功能,向页面增加无害于基础浏览器的额外样式和功能的。当浏览器支持时,它们会自动地呈现出来并发挥作用。

哪些操作会造成内存泄漏?

内存泄漏指任何对象在您不再拥有或需要它之后仍然存在。
垃圾回收器定期扫描对象,并计算引用了每个对象的其他对象的数量。
如果一个对象的引用数量为 0(没有其他对象引用过该对象),或对该对象的惟一引用是循环的,那么该对象的内存即可回收。

setTimeout 的第一个参数使用字符串而非函数的话,会引发内存泄漏。
闭包、控制台日志、循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)

前端安全问题

(XSS,sql注入,CSRF)
CSRF:是跨站请求伪造,很明显根据刚刚的解释,他的核心也就是请求伪造,通过伪造身份提交POST和GET请求来进行跨域的攻击。
完成CSRF需要两个步骤:
    1.登陆受信任的网站A,在本地生成COOKIE
    2.在不登出A的情况下,或者本地COOKIE没有过期的情况下,访问危险网站B。

优化CDN对于静态资源的缓存

这则分是否是首次
1.如果是首次:
        可能是因为cdn没有资源,需要去源站拉取数据缓存,那么就需要将源站的内容先预热cdn上,后面用户访问的时候,就可以直接命中
2.如果不是首次:
    一.资源访问量低,文件预热度不够,cdn收的请求少,无法有效命中缓存
	二.资源配置不合理,缓存时间段及cdn节点频回流
	三.http Header设置导致无法缓存,这个时候就需要检查cache-control和expires的设置
	四.大文件开启range回源
	五.做资源的动态分离,对于动态文件和静态文件放到不同的域名下面,加速静态资源