gpt4 book ai didi

php - 使用 PHP ob_start() 与 Apache Deflate/Gzip 压缩内容?

转载 作者:IT王子 更新时间:2023-10-28 23:44:09 30 4
gpt4 key购买 nike

大多数网站都希望压缩其内容以节省带宽。然而,当涉及到运行 PHP 的 apache 服务器时,有两种方法可以做到 - with PHP或与 Apache 。那么在您的服务器上哪一个更快或更容易?

例如,在 PHP 中,我在页面的开头运行以下函数来启用它:

/**
* Gzip compress page output
* Original function came from wordpress.org
*/
function gzip_compression() {

//If no encoding was given - then it must not be able to accept gzip pages
if( empty($_SERVER['HTTP_ACCEPT_ENCODING']) ) { return false; }

//If zlib is not ALREADY compressing the page - and ob_gzhandler is set
if (( ini_get('zlib.output_compression') == 'On'
OR ini_get('zlib.output_compression_level') > 0 )
OR ini_get('output_handler') == 'ob_gzhandler' ) {
return false;
}

//Else if zlib is loaded start the compression.
if ( extension_loaded( 'zlib' ) AND (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== FALSE) ) {
ob_start('ob_gzhandler');
}

}

other option是使用Apache deflate or gzip (两者都是 very close )。要启用它们,您可以在 .htaccess 文件中添加类似的内容。

AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php

由于 PHP 是一种脚本语言(必须由 PHP 加载),我认为 apache 方法会 1)更稳定,2)更快。但是假设在现实世界中没有多大用处。

毕竟,您会认为拥有庞大的财务支持窗口...,我们不会去那里。

最佳答案

我们正在运行...很多网络服务器,每天处理 60M/uniques。通常这不值得一提,但您的问题似乎是基于经验。

我们在 apache 中运行。无论您选择哪种方法,另一端的输出都是相同的(或足够接近以至于无关紧要)。

我们选择 apache 有几个原因:

  • 零维护,我们刚刚开启。没有人需要维护某种案例结构
  • 性能,在我们的测试服务器中,Apache 完成这项工作的服务器略胜一筹。
  • Apache 会将输出过滤器应用于所有内容,而不仅仅是 PHP。在某些情况下,同一服务器上提供其他类型的内容,我们希望压缩我们的 .css 和 .js

一个警告词,一些浏览器或其他应用程序故意破坏客户端 header ,表明支持压缩。有些人这样做是为了减轻他们在客户端安全方面的工作(想想诺顿互联网安全等应用程序)。您可以忽略这一点,或者尝试添加额外的案例来重写请求以使其看起来正常(浏览器确实支持它,应用程序或代理只是为了让自己的生活更轻松而对其进行了改进)。

或者,如果您使用 flush() 命令更早地将输出发送到浏览器,并且您正在应用压缩,则可能需要在字符串的末尾填充空格以说服服务器提前发送数据。

关于php - 使用 PHP ob_start() 与 Apache Deflate/Gzip 压缩内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1862641/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com