PHP的OB缓存(输出缓存)
使用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
PHP的OB缓存(输出缓存)的更多相关文章
- PHP输出缓存ob系列函数
ob,输出缓冲区,是output buffering的简称,而不是output cache.ob用对了,是能对速度有一定的帮助,但是盲目的加上ob函数,只会增加CPU额外的负担. ob的基本原则:如果 ...
- PHP输出缓存ob系列函数详解
PHP输出缓存ob系列函数详解 ob,输出缓冲区,是output buffering的简称,而不是output cache.ob用对了,是能对速度有一定的帮助,但是盲目的加上ob函数,只会增加CPU额 ...
- PHP flush sleep 输出缓存控制详解
1 2 3 4 5 6 ob_start,flush,ob_flush for($i=0;$i<</SPAN>10;$i++) { echo $i.''; flush(); slee ...
- IntelliJ IDEA修改Output输出缓存区大小【应对:too much output to process】
IntelliJ IDEA默认的Output输出缓存区大小只有1024KB,超过大小限制的就会被清除,而且还会显示[too much output to process],可通过如下配置界面进行修改O ...
- ASP.NET缓存全解析2:页面输出缓存 转自网络原文作者李天平
页面输出缓存是最为简单的缓存机制,该机制将整个ASP.NET页面内容保存在服务器内存中.当用户请求该页面时,系统从内存中输出相关数据,直到缓存数据过期.在这个过程中,缓存内容直接发送给用户,而不必再次 ...
- Azure Redis Cache作为ASP.NET 缓存输出提供程序
前一篇文章<Azure Redis Cache作为ASP.NET Session状态提供程序 >我们已经知道如何将ASP.NET应用程序Session存储在Redis Cache中,这里我 ...
- [置顶]
MVC输出缓存(OutputCache参数详解)
1.学习之前你应该知道这些 几乎每个项目都会用到缓存,这是必然的.以前在学校时做的网站基本上的一个标准就是1.搞定增删改查2.页面做的不要太差3.能运行(ps真的有这种情况,答辩验收的时候几个人在讲台 ...
- MVC输出缓存(OutputCache参数详解)
版权声明:本文为博主原创文章,未经博主允许转载随意. https://blog.csdn.net/kebi007/article/details/59199115 1.学习之前你应该知道这些 几乎每个 ...
- ASP.NET MVC如何使用输出缓存
通过这篇文章你将学习到在MVC中如何使用输出缓存,业务逻辑我就不多介绍了,主要是Outputcache的基本使用.至于数据缓存还是等我的下一篇文章吧,一步一步来不急的. 输出缓存的使用方法是在Co ...
随机推荐
- C++访问托管类(C#类库)
1.新建C# 类库项目Airth,新建类 using System; using System.Collections.Generic; using System.Linq; using System ...
- 切换到android studio环境
下载: android-studio-bundle-135.1740770-windows.exe sysimg_arm-21_r03.zip 设置环境变量: ANDROID_SDK_HOME ...
- UNICODE与UTF8和GBK之间的关系
http://wenku.baidu.com/link?url=bheGEzfSjEx-QX-ciME5oKooKYE08_NJZ02l2kKFa7kVZJ4t8Ks2uSNByovgP2QL6btq ...
- jquery datatables双击,获取行号。
function dbClickDatatables(rows) { $("#@(Perfix)tbData tbody tr").dblclick(function(e){ de ...
- Bugtags 介绍视频 - App 测试 · 从未如此简单
Bugtags 是什么? Bugtags 是移动时代首选 Bug 管理系统,针对不同的使用场景,Bugtags 具有以下强大特性: 移动应用 Bug 管理 Bugtags 可以直接在应用中所见即所得提 ...
- MYSQL C API : struct MYSQL_STMT 结构的组合使用
#include <iostream> #include <string> #include <string.h> #include <assert.h> ...
- 70. Implement strStr() 与 KMP算法
Implement strStr() Implement strStr(). Returns a pointer to the first occurrence of needle in haysta ...
- 40. Interleaving String
Interleaving String Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. Fo ...
- R&S学习笔记(一)
1.一个VRF有两个主要的组成部分:路由区分符RD和路由目标RT.一个路由区分符(RD)是一个数字,除了帮助识别在一个提供商的网络中的VPN和允许重叠 IP区域之外没有其它的含义.RD是一个分为两个部 ...
- leetcode 169
169. Majority Element Given an array of size n, find the majority element. The majority element is t ...