1、闭包:
设计私有的方法和变量,优点:避免被全局变量污染 缺点:常驻内存,会增加内存使用量,使用不当易造成内存泄漏。
其3个特性:1)函数嵌套函数
2)函数内部可以引用外部的参数和变量
3)参数和变量不会被垃圾回收机制回收
2、谈谈cookie弊端
cookie虽然在持久保存客户端数据提供了方便,分担了服务器储存的负担,但还是有很多局限的:
1)每个特定的域名下最多生成20个cookie(IE6或更低版本最多20个,IE7后的版本最多可以有50个,firefeox最多50个,chrome和Safari没有做硬性限制。)
IE和Opera会清理最近最少使用的cookie,Firefox会随机清理cookie。
cookie的最大大约为4096个字节,为了兼容习性一般不超4095个字节。
3、页面优化
1)页面级别的优化:HTTP请求数、脚本的无阻塞加载、内联脚本的位置优化
每个请求都是需要成本的,既包含时间成本也包含资源成本。一个完整的请求都需要经过DNS寻址、与服务器建立连接、发送数据等待,服务器响应,
1、减少HTTP请求数主要途径包括:
1)从设计实现层面简化页面
2)合理设置HTTP缓存
3)资源合并和压缩(将外部的脚本、样式进行合并,多个合为一个。css,js,image都可以用响应的工具进行压缩,能省下不少空间)
4)css sprites(合并css图片,可减少请求数)
5)Inline Images
6)Lazy Load Image
2、将外部脚本置底
(浏览器可并发请求、可更快加载资源,但是外链接在加载时会阻塞其他资源,如果放在靠前的位置则会影响后面的图片、样式、其他脚本的加载,所以适合放在靠后位置)
3、异步执行inline脚本
( inline脚本比外部脚本,一样会阻塞并发请求,除此外,inline脚本在页面渲染前执行,则渲染工作会被推迟,即页面处于空白状态。(浏览器在页面处理方面是单线程的))
4、Lazy Load Javasript(一种是为流量特大的页面定制专用的mini版框架;另一种是Lazy load ,最初只加载核心模板,其他模板等需要时再加载)
5、将CSS放在head中
(能在页面渲染时,避免浏览器还没解析到css就开始渲染页面,从无css状态到有css状态,用户体验差;一些浏览器等下载好css才开始渲染,css靠下位置会导致渲染时间推迟。)
6、异步请求Callback
(异步加载,可在Domloaded事件触发时加载,或使用setTimeout方式灵活控制加载时机)
7、减少不必要的HTTP跳转
8、避免重复的资源请求
2)代码级别的优化:js中的DOM操作优化、CSS选择符优化、图片优化以及HTML结构优化等
(1). DOM
(2). 慎用with
(3). 避免使用eval和Function
(4). 减少作用域链查找
(5). 数据访问
(6). 字符串拼接