前端性能优化七大手段
(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回源
五.做资源的动态分离,对于动态文件和静态文件放到不同的域名下面,加速静态资源