Chinaunix首页 | 论坛 | 博客
  • 博客访问: 959173
  • 博文数量: 245
  • 博客积分: 11429
  • 博客等级: 上将
  • 技术积分: 2662
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-15 00:16
文章存档

2011年(56)

2010年(174)

2009年(15)

分类: LINUX

2011-04-08 10:23:31

网站最近搞了次优化,效果比较明显,以前不敢用的动态加载(我自己起得,洋名叫lazy load,这样翻译应该也算得体,延迟加载也说得过去..)终于派上了用场.

总的来说是这样的:

  1. 页面加载时不会初始化的脚本不引用,不显示的ui用的样式不加载.用户交互用到时加载.
  2. 除用户可视区域外的图片不加载,用户有滚屏操作时加载.

具体实现:

1 . 实现js和css的动态加载
适用 : 页面的pv较高,功能模块较多,每次刷新页面都需要重复解析和渲染.
缺点 : 用户从点击一个按钮到函数响应,中间会有静态的下载和解析的一段延迟(有客户端缓存会好的多)
优化 : 为了尽量让用户感觉不到延迟,我们在登录页面预载的一些经常用到的脚本(由于网站的更新周期固定,所以脚本仅会在更新当天预载)
实现 :

XN.dynamicLoad(
{
files : ['',
''],
funcs : ['doPoke']
});

以上代码是人人网个人主页中的一段代码,用来动态加载打招呼的功能,files注册需要动态加载进来的静态,funcs注册触发加载的函数名.这个东西以前写过

2 . 实现图片的动态加载
适用 : 现在仅对新鲜事动了刀,因为新鲜事里图片变动太快,客户端缓存率太低.整个页面图片动态加载没有必要,因为很多模块都是固定的,本来客户端就有缓存.
缺点 : 这个东东很冒险,上线之后发现ff3.0刷新之后图片全白了,正在优化实现代码…
优化 : 既然问题那么多,为了便于维护,仅对ie和ff两种用户比较多的浏览器才用这种方法.
实现 :

lala=""
src="" onload="feed_img_delay_load(this);" />

以上是人人网home页新鲜事中的一段代码,图片的src=””是一个1×1像素的空白gif,而 它的真正地址被存在”lala”这个属性中(有人问我为什么要起个lala呢…随意起得了,起个dongganchaoren就有点长 了…),onload中的feed_delay_load是关键,1×1的图片加载完毕后会调用它,它首先会判断图片是否在可视区域,如果是把它显示出 来,如果不是把图片放到加载队列里.然后会有一个定时器检测屏幕滚动,从队列里加载图片.

优化效果 :
试过才知道,真的好用…

原文:

阅读(919) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~