当前位置:  编程技术>php

使用ob系列函数实现PHP网站页面静态化

    来源: 互联网  发布时间:2014-08-26

    本文导语:  将PHP的执行页面预先转换成HTML,是所谓的PHP静态化方法之一。 其他还有模板替换法,opcache等方法。 静态化的作用: 提高网站的响应速度,降低服务器的负载; 用于搜索引擎的SEO; 利用PHP输出buffer直接写成html,定时后台定...

将PHP的执行页面预先转换成HTML,是所谓的PHP静态化方法之一。

其他还有模板替换法,opcache等方法。

静态化的作用:

提高网站的响应速度,降低服务器的负载;
用于搜索引擎的SEO;
利用PHP输出buffer直接写成html,定时后台定时扫一遍网站,是比较容易实现的网页静态化。

静态化之前:


静态化:


该段代码就会预先形成一个test.html,说白了其实就是用空间换取时间,像新闻类网站,发布的内容基本上写完是不会变了,比较适合静态化成html。

用户访问的时候就direct到这个html页面上就可以了。

简单的用apache benchmark测试一下效果:

ab.exe -n1000 -c10

两者在90%以上的连接中,至少相差150ms。相对于复杂的php来说,html节约下来的运算量还是不少的。

另附相关函数简介


1、Flush:刷新缓冲区的内容,输出。
函数格式:flush()
说明:这个函数经常使用,效率很高。

2、ob_start :打开输出缓冲区
函数格式:void ob_start(void)
说明:当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。为了输出缓冲区的内容,可以使用ob_end_flush()或flush()输出缓冲区的内容。

3 、ob_get_contents :返回内部缓冲区的内容。
使用方法:string ob_get_contents(void)
说明:这个函数会返回当前缓冲区中的内容,如果输出缓冲区没有激活,则返回 FALSE 。

4、ob_get_length:返回内部缓冲区的长度。
使用方法:int ob_get_length(void)
说明:这个函数会返回当前缓冲区中的长度;和ob_get_contents一样,如果输出缓冲区没有激活。则返回 FALSE。

5、ob_end_flush :发送内部缓冲区的内容到浏览器,并且关闭输出缓冲区。
使用方法:void ob_end_flush(void)
说明:这个函数发送输出缓冲区的内容(如果有的话)。

6、ob_end_clean:删除内部缓冲区的内容,并且关闭内部缓冲区
使用方法:void ob_end_clean(void)
说明:这个函数不会输出内部缓冲区的内容而是把它删除!

7、ob_implicit_flush:打开或关闭绝对刷新
使用方法:void ob_implicit_flush ([int flag])
说明:使用过Perl的人都知道$|=x的意义,这个字符串可以打开/关闭缓冲区,而ob_implicit_flush函数也和那个一样,默认为关闭缓冲区,打开绝对输出后,每个脚本输出都直接发送到浏览器,不再需要调用 flush()。


    
 
 

您可能感兴趣的文章:

  • 静态库动态库同时存在时,如何指定使用静态库
  • linux下静态库使用:"未使用链接器输入文件,因为链接尚未完成"
  • C# 静态构造函数使用总结
  • 见鬼了,为什么死活不能使用静态连接???
  • 请教一个使用静态库的问题
  • 编译静态链接库,其中使用了其它链接库,该如何写makefile
  • 如何指定使用静态库libstdc++.a而不是动态库libstdc++.so
  • qt怎么使用动态库so和静态库.a文件啊
  • 请问做动态库和静态库在使用上有什么区别?
  • linux下一次使用多个静态库的makefile编写?
  • java用静态工厂代替构造函数使用方法和优缺点
  • c#只读字段和常量的区别,以及静态构造函数的使用实例
  • asp.net网站伪静态怎么使用中文url地址?
  • JAVA中使用双括号来初始化静态常量的小技巧
  • 请教一个直接使用libxml2静态库的问题
  • ASP.NET网站伪静态下使用中文URL的方法
  • ○ 使用静态链接库问题?
  • 静态库.a的使用问题
  • 编译静态类,使用时出现问题
  • 关于linux环境下使用eclipse碰到的引用静态链接库的问题。。。。
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • 怎样在使用curses字符串输出函数或字符输出函数时,隐藏光标
  • php使用socket_bind()函数绑定IP地址
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • 请问在REDHAT下使用gcc编译器用的是什么函数库,函数库的资料应该上哪儿找?
  • 请问有没头函数<pthread.h>和<signal.h>里的函数的详细功能介绍?和使用方法???
  • getaddrinfo这个函数是从哪里获取信息的?使用这个函数究竟哪里方便了。。
  • c#只读字段和常量的区别,以及静态构造函数的使用实例 iis7站长之家
  • Python过滤函数filter()使用自定义函数过滤序列实例
  • 急:unix的shell脚本中,定义了一个函数getDate(),在后面的执行命令参数用要使用这个函数的返回值,应该怎么写?
  • 请问如何在一个函数内部定义的一个新类中使用函数里声明的变量
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 为何我使用javascript中location'****.jsp'跳到某一页面,jsp页面不重新编译执行
  • 怎样使用socket方式取得web服务器上的页面
  • web页面使用vncsharp远程连接到Linux
  • 解决jsp页面使用网络路径访问图片的乱码问题
  • php 不使用js实现页面跳转
  • 关于使用applet打开Web页面
  • JSP页面中文传递参数使用escape编码
  • servlet使用RequestDispatcher到jsp页面,浏览器url栏还是servlet
  • 怎样才能在jsp页面中使用可视的JavaBean?
  • 哪位有使用XML创建可排序、分页的数据显示页面的例程?多多指教噢!
  • 使用struts的时候,怎么才能在页面打开的时候,form里面已经填入我所需要的值?
  • html页面如何指向web-inf/classes下的applet。是否使用codebase之类的说明,该如何书写。
  • 两个简单问题:在javaBean中能用out.println()输出页面吗?javaBean中可以使用servlet建立的session对象变量值吗?
  • 请问各位大虾,如何使用jsp页面里的butten触发调用bean或者servlet???
  • crawler4j抓取页面使用jsoup解析html时的解决方法
  • 使用jquery.get提交页面没有跳转的解决方法
  • jsp页面中不能使用System.out.println?
  • 使用JQUERY进行后台页面布局控制DIV实现左右式
  • php 使用GD库为页面增加水印示例代码
  • 关于jsp页面使用jstl的异常分析
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • Python不使用print而直接输出二进制字符串
  • c#中SAPI使用总结——SpVoice的使用方法
  • Office 2010 Module模式下使用VBA Addressof
  • 使用了QWidget的程序,如何使用后台程序启动它?
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • 共享内存一般是怎么使用的,是同消息队列配合使用么
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3