php ob_start及其相关方法详解

php函数中,有一组以ob_开头的函数,被称为Output Control函数,通过设置缓冲区用来控制数据的输出,其中ob_start为开启缓冲区。当用户开启了缓冲区,所有将要输出到页面的信息将先被放置在缓冲区内,直到你用 flush 或者 ob_end_flush 才会输出到页面上。

不过对使用 header() 或 setcookie() 发送的文件头信息不会被写入缓冲区,对header()有多了解就知道,在使用header函数之前,页面是不能有输出哪怕是空格和换行也不行,否则就会报“Header had all ready send by”的错误信息了。当时当我们在页面最开始开启了缓冲区(调用ob_start方法),那我们输出的内容将被缓存在缓存内,这样在调用header方法时将不会出现“Header had all ready send by”的错误提示。见如下代码:
未完,继续阅读

LazyLoad+ob_start(),完美解决图片延迟加载 [jQuery 插件]

Lazy Load是一个用户延迟加载图片的jQuery插件。再配合后台ob_start()开启页面缓冲区,就能完美的解决图片延迟加载,在没有后台配合的情况下,Lazy Load只是一个伪懒加载模式,长页面,多图时,它只能解决页面加载速度的问题,而不能解决减轻服务器压力的问题,甚至反而加重服务器压力。具体下文介绍。

Lazy Load介绍

Lazy Load是一个用JavaScript编写的jQuery插件,它可以延迟加载长页面中的图片,在浏览器可视区域外的图片不会被载入,直到用户将页面滚动到它们所在的位置。在包含很多大图片长页面中延迟加载图片可以加快页面加载速度,在某些情况下,他还能减轻服务器的压力。
而关于Lazy Load的介绍,最早是来源于一英文博客:http://www.appelsiini.net/projects/lazyload(下文将重新介绍)
后经翻译为:http://www.neoease.com/lazy-load-jquery-plugin-delay-load-image/
不过这些都是一年多以前的事情了,时至今日,Lazy Load已经更新到了1.6.0-dev版,比起当初已经有了一些变化。不仅如此,当初的插件有一大硬伤,如果不修改后台图片src属性,其表面实现了图片的延迟加载,实际上图片还是被下载的客户机上,并没有打到减轻服务器压力的目的。(实际上,在不修改后台代码的情况下,该插件任然没有解决这一问题)
以下是Lazy Load的介绍,我将按照原博客的方式介绍。
未完,继续阅读