拒绝图片延迟加载,爽爽的看美图

标签: 图片 延迟加载 美图 | 发表时间:2011-08-21 13:44 | 作者:杨中科 书皮
出处:http://www.cnblogs.com/

    有一天我一个朋友访问一个XX图片网站……每个人背后总有几个背黑锅的“朋友”,好吧,我承认那个“朋友”其实是我自己,你能把我怎么的?

    这个网站用的是Discuz X2搭建的,启动了Discuz的图片延迟加载的功能。现在很多图片网站为了降低服务器压力都启用了图片延迟加载的机制,也就是只有图片处于可视区域才加载,这样用户没看到的图片就不加载,对于服务器的负载减轻还是帮助很大的。大致的原理是,对于图片标签不是把图片的路径指定到src属性上,src属性指定一个非常小的空白图片,真正的图片地址设置到一个自定义的属性上,比如file,这样img标签就是这样:

<img src="blank.jpg" file="00xx.jpg"/>

    由于图片的地址指定到了一个自定义属性上,所以img不会去加载那个图片。当图片在浏览器上加载的时候显示的那个非常小的空白图片blank.jpg(如果不设置初始的src会显示红叉,很难看),而且页面中所有的要延迟加载的图片都是使用blank.jpg,由于blank.jpg加了缓存,这样对服务器的压力几乎没有。

    然后启动一个定时器,定时检测图片是否处于可视区域,如果处于可视区域,则将file属性的值设置到src属性上,这样图片才开始加载。这是伟大程序员的伟大发明,真的很牛。

    但是对于用户来讲就没那么爽了,如果网速比较慢的话,每次滚动到一个图片上都要等待它加载很痛苦!而且看XX组图通常要把好几个帖子一起打开,让那些帖子慢慢后台加载,咱们再一个帖子一个帖子的看,但是一旦有了延迟加载就只能挨个打开再忍耐着它加载看了,不爽呀,Hold不住呀!

    程序员用程序员的智慧,问题很好解决,写一个JavaScript脚本把所有图片的file属性一次性设置到src属性上不就ok了吗?写一个JavaScript脚本:

javascript:var html='';for(var i=0;i<document.images.length;i++){var img = document.images[i];if(img.file){html+='<img src='+img.file+' />';}};document.write(html+"<br/>ok");

    我这个代码更直接,遍历网页上有file属性的图片,然后构造出一个含有所有图片的html然后输出到浏览器,哈哈页面上只有图片!这段代码是非常简单的JavaScript dom操作代码,看不懂的同学可以参考传智播客的免费.Net视频教程中的JavaScript教程部分。

    把上面的代码粘贴到地址栏,按下回车整个网页只有图片了,没有广告、没有文字、只有图片,不要太爽哟!

    下面这张延迟加载的原始网页(为了和谐,我费了半天劲才选了一个尺度非常小的组图,同时为了和谐,我把网址、网站名都mosaic了,请谅解):

 

 

执行脚本后的页面:

 

    为了用起来更方便把上面的代码添加到收藏夹,打开每个图片帖子以后点击一下收藏夹里这个代码的项,方便更进一步!

    如果想用起来更方便一点,可以写一个BHO,每次网页加载完毕的时候自动执行上面的代码,就完全自动化了,我比较懒就不去写了,思路留给大家。

作者: 杨中科 发表于 2011-08-21 13:44 原文链接

评论: 22 查看评论 发表评论


最新新闻:
· 10个顶级Web移动开发JavaScript框架(2011-08-21 22:24)
· 很多用户都不知道的10个优秀HTML5的编码工具(2011-08-21 14:26)
· John Gruber:iPhone 改变了 Android 手机的外观?(2011-08-21 14:26)
· Windows 8是否能够重振微软帝国雄风?(2011-08-21 14:26)
· 传RIM下月测试黑莓音乐服务 每月5美元50首歌(2011-08-21 13:52)

编辑推荐:大道至简,职场上做人做事做管理

网站导航:博客园首页  我的园子  新闻  闪存  小组  博问  知识库

相关 [图片 延迟加载 美图] 推荐:

拒绝图片延迟加载,爽爽的看美图

- 书皮 - 博客园-首页原创精华区
    有一天我一个朋友访问一个XX图片网站……每个人背后总有几个背黑锅的“朋友”,好吧,我承认那个“朋友”其实是我自己,你能把我怎么的.     这个网站用的是Discuz X2搭建的,启动了Discuz的图片延迟加载的功能. 现在很多图片网站为了降低服务器压力都启用了图片延迟加载的机制,也就是只有图片处于可视区域才加载,这样用户没看到的图片就不加载,对于服务器的负载减轻还是帮助很大的.

延迟加载图片的 jQuery 插件:Lazy Load

- - 我爱水煮鱼
网站的速度非常重要,现在有很多网站优化的工具,如 Google 的 Page Speed,Yahoo 的 YSlow,对于网页图片,Yahoo 还提供 Smush.it 这个工具对图片进行批量压缩,但是对于图片非常多的网站,载入网页还是需要比较长的时间,这个时候我们可以使用 Lazy Load 这个 jQuery 插件来延迟加载图片.

图片延迟加载 - 前端开发技能必备系列

- - 博客园_首页
在网上经常会看到一些很长的网页会延迟加载其中的图片,我认为这是一种按需分配的做法,网页只为那些想继续浏览网页的人加载后面的图片,在不影响用户体验的前提下,最大程度地减少服务器负担和流量. 目前,主要的购物网站都采用了这种加载方式. 今天在一个网友的站里发现一个图片延迟加载的插件,很好用,在这里介绍一下.

hibernate的延迟加载

- - ITeye博客
    代码的逻辑是:查询出id为1的major, 并输出其名字. 很明显, 代码的逻辑是对的.   可一运行就会报错:. 翻译过来就是:  延迟加载异常:不能初始化代理 --- session不存在. 出现这个报错信息的原因就在于hibernate的延迟加载机制.     所谓的延迟加载就是程序在使用load, iterator方法执行查询及关联查询时, 并不会马上发送并执行sql语句, 而是在调用(被查询)对象属性的getter方法时才去执行查询.

Hibernate延迟加载机制

- - 企业架构 - ITeye博客
转自:http://blog.163.com/xi_zh_qi/blog/static/8501594200812695053939/.    延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作. 在Hibernate中提供了对实体对象的延迟加载以及对集合的延迟加载,另外在Hibernate3中还提供了对属性的延迟加载.

Mybatis查询延迟加载

- - Elim的个人空间
Mybatis 查询延迟加载. 1.1        启用延迟加载. 1.2        分析.        Mybatis的延迟加载是针对嵌套查询而言的,是指在进行查询的时候先只查询最外层的SQL,对于内层SQL将在需要使用的时候才查询出来. Mybatis的延迟加载默认是关闭的,即默认是一次就将所有的嵌套SQL一并查了将对象所有的信息都查询出来.

背景图延迟加载(lazyload)技术

- - Web骇客
图片延迟加载技术目前已经被各种网站广泛的使用,但最近的一篇《 PS美女试验的惊人结果 》文章中使用的却是背景图延迟加载技术. 为什么要使用背景图延迟加载技术. 之所以使用图片延迟加载技术,是为了避免浪费带宽. 有些页面上嵌入了很多图片(上面所说的《 PS美女试验的惊人结果 》里就嵌入了30多张高清美女图),但电脑的屏幕一次只能显示一张或顶多2张.

一款非常轻量的延迟加载插件

- - CSS库
jQuery Unveil 是一款轻量的延迟加载插件,支持提供用于视网膜显示设备的高分辨率图像. 这个插件非常有用,它能提高长网页中图像的加载性能,因为视口以外的图像(可见部分网页)将不会被加载,直到用户滚动到它们所在的区域.   延迟加载有一些很酷的选项,如自定义效果,容器,事件或数据属性. 如果你不想使用这些功能,你可以减小文件的大小,只留下必要的代码来显示图像.

无法用言语描述的动态图片之美(图片集)

- Kofai - 36氪
在这个信息爆炸的时代,我们很容易就欣赏到许多的“艺术品”,但是以下这几张Gif图片却完美的让人无话可说,在此向两位创造者Jamie Beck和Kevin Burg表达敬佩之情,以下为图片集:. 转载请注明: “转载自@36氪”,谢谢:).

美图秀秀发布gif动态图片拍摄应用

- Zen - 36氪
在手机拍照分享越来越流行的今天,静态图片已经无法满足许多用户的需求了,于是出现了一些快速拍摄简单的动态gif图片的应用. 美图gif就是这样一款刚刚发布的轻量应用. 使用该应用拍摄gif图片非常简单,只需一键拍摄,其便会自动保存多帧图片以形成动态效果. 另外它还继承了美图优秀的图片处理功能,内置许多特效,帮助用户快速美化动态图片.