使用PHP自带的缓存机制

原则:如果ob缓存打开,则echo的数据首先放在ob缓存。如果是header信息,直接放在程序缓存。当页面执行到最后,会把ob缓存的数据放到程序缓存,然后依次返回给浏览器。

OB(输出缓存)缓存的机制:

看段代码:

echo 'hello100';

header('Content-Type:text/html;charset=utf-8');

echo 'hello200';

为什么不打开ob缓存要报错?

没有ob缓存时,程序遇见一个echo就将它放到程序缓存中(之前默认有header),根据http协议格式,先有header头再有body数据,所以就不能在body后再加header。

为什么打开ob缓存后不报错?

看间echo就把echo的信息放到ob缓存中,看见header信息就放到程序缓存中,最后程序结束时,将ob缓存中的数据刷新到程序缓存中

在php5.2有个配置项:ouput_buffering,默认是关闭的,则这个代码会报错。

解决方案:a 将header写在最前面 b 打开ob缓存

☆如何打开ob缓存的方法

① 在配置文件中php.ini文件中output_buffering=4096

② 在程序中加一句话 ob_start(); //开启ob缓存

几个重要ob函数:

$str = ob_get_contents();  //获取ob缓存数据

ob_clean(); //清空ob缓存的数据

ob_end_cleam(); //清空ob缓存的数据并关闭缓存

ob_flush(); //把ob缓存的数据刷新(剪切)到程序缓存

ob_end_flush(); //把ob缓存的数据刷新(剪切)到程序缓存并关闭ob缓存

flush(); //把程序缓存强制刷新到浏览器缓存

http://blog.sina.com.cn/s/blog_9bbafb790101cmpb.html

转载于:https://www.cnblogs.com/jxkshu/p/5267949.html

PHP的OB缓存(输出缓存)相关推荐

  1. php的缓冲器,php输出缓存控制

    一.什么是缓冲区? 答:就是把输入或者输出的内容先放进内存,而不显示或者读取,作用:协调高速CPU和相对缓慢的IO设备(磁盘等)的运作. 二.什么是php 输出缓存控制(Output Control) ...

  2. PHP输出缓存(output_buffering)小记 -- 尚有疑问

    首先明确一下PHP的输出顺序 1.打开了php输出缓存: echo,print -> php output_buffring -> server buffering -> brows ...

  3. 页面输出缓存[转载]

    页面输出缓存作为最简单的缓存形式,输出缓存只是在内存中保留为响应请求而发送的HTML的副本.其后再有请求时将提供缓存的输出,直到缓存到期,这样,性能有可能得到很大的提高.     可以用以下几种方式进 ...

  4. php 返回的缓存数据,基于PHP输出缓存(output_buffering)的深入理解

    首先明确一下PHP的输出顺序1.打开了php输出缓存: echo,print -> php output_buffring -> server buffering -> browse ...

  5. 【翻译】ASP.NET 4中的可扩展输出缓存

    翻译自:http://weblogs.asp.net/scottgu/archive/2010/01/27/extensible-output-caching-with-asp-net-4-vs-20 ...

  6. ASP.NET页面输出缓存知识

    最近因项目要求,需要研究ASP.NET缓存,可是查阅了书本,msdn,网上后有点失望,真是天下文章一大抄啊,大家讲来讲去都是那么几点,没有条理,没有重点,也没有心得,所以我决定自己来写一篇,当然,我是 ...

  7. Output输出缓存区大小只有1024KB,超过大小限制的就会被清除

    pycharm默认的Output输出缓存区大小只有1024KB,超过大小限制的就会被清除,可以设置个较大值来解决显示不全,选择 Preferences -> Editor -> Conso ...

  8. ASP.NET 缓存技术(一)——启用页面输出缓存

    作者寄语:MSDN 是最好的老师,互联网是最智慧的生命体,分享是最重要的成长途径,技术的进步在于学习.实践和创新! 本系列所讲述的技术和展示的代码适用于 .NET Framework 4.0 和 II ...

  9. .NET Petshop详解(五):petshop输出缓存设置 (转)

    .NET Petshop详解(五):petshop输出缓存设置 (转)[@more@] .NET Petshop详解(五):petshop输出缓存设置XML:namespace prefix = o ...

最新文章

  1. Druid数据库连接池超时问题com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 1000, active 10
  2. 浅谈SQL Server中统计对于查询的影响
  3. AI 领域新突破,腾讯发布首个AI药物研发平台「云深智药」
  4. 关于学习Python的一点学习总结(32->隐藏及lambda)
  5. 如何在Win7以上环境使用VC++6
  6. CSDN编程挑战——《-3+1》
  7. 40个超酷的jQuery动画教程
  8. ASP.NET教程5
  9. stm32可以移植linux系统吗,如何在STM32上移植Linux?超详细的实操经验分享
  10. Swift - 环形进度条(UIActivityIndicatorView)的用法
  11. php返回中文是 u,php json_encode总是返回unicode字符 u.问题 解决
  12. 酒店订房管理系统php,酒店预定管理系统(源码+数据库+文档)
  13. 路由器、交换机配置命令简写对照表
  14. c语言 节日,农历阳历之间转换和节气节日查询C语言编程
  15. 音频剪辑软件分享,教你快速剪辑音频
  16. 苹果CMS接入GOGO支付实现个人收款回调详细教程(附插件)
  17. java调用快捷支付接口_Android客户端集成支付宝快捷支付
  18. 【博客话题】人在囧途之“运维囧”
  19. presto日期转换及计算
  20. ValueError With n_samples=0, test_size=0.2 and train_size=None, the resulting train set will be empt

热门文章

  1. JAVA中toString方法的作用
  2. 用python实现队列的循环左移和右移的实验原理_python的移位操作实现详解
  3. html区分大小写字母吗,javascript变量区分大小写吗?
  4. 有的歌声音大有的歌声音小_手机听筒声音小怎么办?别急,只需一把刷子
  5. Android版本Oppo电视,OPPO 智能电视 R1
  6. 思维导图 源码 php,使用思维导图,优雅的完成自己的代码
  7. html datatype自定义,$.ajax中dataType为html实现地区显示效果
  8. FreeRTOS学习笔记---动态创建任务 xTaskCreate() 源码分析
  9. SSM整合——实现图书的查询功能
  10. hihoCoder-1098最小生成树二·Kruscal算法 (最小生成树)