<?
/*
** Title.........: PHP4 HTTP Compression Speeds up the Web
** Version.......: 1.20
** Author........: catoc <
catoc@163.net
>
** Filename......: gzdoc.php
** Last changed..: 18/10/2000
** Requirments...: PHP4 >= 4.0.1
** PHP was configured with --with-zlib[=DIR]
** Notes.........: Dynamic Content Acceleration compresses
** the data transmission data on the fly
** code by sun jin hu (catoc) <
catoc@163.net
>
** Most newer browsers since 1998/1999 have
** been equipped to support the HTTP 1.1
** standard known as /"content-encoding./"
** Essentially the browser indicates to the
** server that it can accept /"content encoding/"
** and if the server is capable it will then
** compress the data and transmit it. The
** browser decompresses it and then renders
** the page.
**
** Modified by John Lim (
jlim@natsoft.com.my
)
** based on ideas by Sandy McArthur, Jr
** Usage........:
** No space before the beginning of the first /'<?/' tag.
** ------------Start of file----------
** |<?
** | include(/'gzdoc.php/');
** |? >
** |<HTML>
** |... the page ...
** |</HTML>
** |<?
** | gzdocout();
** |? >
** -------------End of file-----------
*/
ob_start();
ob_implicit_flush(0);
function CheckCanGzip(){
global $HTTP_ACCEPT_ENCODING;
if (headers_sent() || connection_timeout() || connection_aborted()){
return 0;
}
if (strpos($HTTP_ACCEPT_ENCODING, /'x-gzip/') !== false) return /"x-gzip/";
if (strpos($HTTP_ACCEPT_ENCODING,/'gzip/') !== false) return /"gzip/";
return 0;
}
/* $level = compression level 0-9, 0=none, 9=max */
function GzDocOut($level=1,$debug=0){
$ENCODING = CheckCanGzip();
if ($ENCODING){
print /"n<!-- Use compress $ENCODING -->n/";
$Contents = ob_get_contents();
ob_end_clean();
if ($debug){
$s = /"<p>Not compress length: /".strlen($Contents);
$s .= /"
Compressed length: /".strlen(gzcompress($Contents,$level));
$Contents .= $s;
}
header(/"Content-Encoding: $ENCODING/");
print /"x1fx8bx08x00x00x00x00x00/";
$Size = strlen($Contents);
$Crc = crc32($Contents);
$Contents = gzcompress($Contents,$level);
$Contents = substr($Contents, 0, strlen($Contents) - 4);
print $Contents;
print pack(/'V/',$Crc);
print pack(/'V/',$Size);
exit;
}else{
ob_end_flush();
exit;
}
}
?>
相关推荐
### 使用PHP的`ob_start();`控制浏览器缓存详解 #### 标题及描述解析 本文旨在探讨如何通过PHP中的`ob_start();`函数来控制浏览器缓存,这对于优化网站性能、减少网络流量以及改善用户体验等方面具有重要意义。 ##...
通过使用`ob_start()`等输出控制函数,开发者可以更好地控制PHP脚本生成的内容,包括防止意外的输出破坏HTTP头信息,以及创建高效的动态网页生成静态HTML的机制。这在优化网站性能、管理浏览器缓存以及实现复杂的...
在PHP中,`ob_start()` 是一个非常重要的输出控制函数,它允许开发者在脚本执行过程中控制数据的输出,特别是在需要在输出数据之后设置文件头(如`header()`函数)的情况下。`ob_start()` 的主要作用是开启输出缓冲...
在实际开发中,结合使用 `ob_start()`, `ob_clean()`, `ob_get_contents()` 等相关函数,可以灵活地控制和管理PHP的输出缓冲,实现诸如分块传输、HTML压缩、内容替换等多种优化策略。了解这些函数的差异和使用场景,...
`ob_start()` 是PHP中的一个输出控制函数,它是实现此功能的关键。`ob_start()` 开启输出缓冲区,这意味着PHP脚本的任何输出(包括HTML、echo、print等)都不会立即发送到浏览器,而是被保存在内存中。这样我们就有...
在实际使用中,需要先调用`page_init()`初始化,接着`ob_start()`开启缓存,接着执行正常的PHP代码,最后调用`page_cache()`生成或更新缓存。确保这两个函数的顺序正确,且在页面内容输出之前调用`ob_start()`。 ...
然而,在实际开发过程中,开发者经常会遇到 `session_start()` 报错的情况,提示 "Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent"。这个错误意味...
输出控制常用于生成静态HTML文件,例如,你可以先调用`ob_start()`,然后执行整个动态页面的逻辑,最后用`ob_get_contents()`获取缓冲区内容,通过`fwrite()`写入到一个HTML文件中,最后使用`ob_end_clean()`清理...
在Web开发过程中,PHP输出缓存是一种常见的优化手段,...对于GZIP压缩,可以通过ob_start(ob_gzhandler)轻松实现页面的GZIP压缩,前提是服务器支持zlib,并且浏览器支持GZIP。如果担心浏览器支持问题,可以先进行检测。
通过OB系列函数,你可以灵活地控制PHP输出,例如在需要保存`phpinfo()`输出时,可以先调用`ob_start()`开启缓冲,执行`phpinfo()`,然后用`ob_get_contents()`获取缓冲区内容,最后再用`ob_end_clean()`或`ob_end_...
ob系列函数是PHP中用于控制输出缓冲区的一组函数,它们包括: 1. ob_start():当调用此函数时,PHP会启动输出缓冲区。在这个函数之后,直到ob_end_flush()或ob_end_clean()被调用之前,所有输出都会被暂存到一个...
- 使用`ob_start()`函数来启动输出缓冲区,这可以在任何输出发生之前捕获所有输出内容。 - 确保在`session_start()`之前没有任何输出,包括空白字符。 - 示例代码: ```php <?php ob_start(); session_start...
- **使用示例**: 要实现页面缓存,需要在代码开头调用 `page_init()` 初始化缓存,接着使用 `ob_start()` 开启缓冲,然后执行动态生成页面内容的代码,最后调用 `page_cache()` 生成缓存文件。记得在程序结束时调用 ...
在PHP中,可以使用ob_start('ob_gzhandler')开启Gzip输出缓冲,使服务器自动对输出内容进行Gzip压缩。 为了提高效率和减轻服务器负担,缓存机制是必不可少的。当用户首次访问时,服务器会合并并压缩JS文件,然后将...
在上面的代码中,使用了ob_start()函数来启用输出缓冲区,并使用session_cache_limiter()函数来设置Session缓存时间和缓存方式,最后使用session_start()函数来启动Session机制。这样可以解决浏览器缓存问题,防止...
7. **`ob_start()`, `ob_get_contents()`, `ob_end_flush()`**:这些函数用于控制PHP的输出缓冲机制,对于实现页面缓存非常关键。 8. **`ob_flush()`, `ob_clean()`, `ob_end_clean()`**:这些函数则用于清除或结束...