PHP性能:gzcompress()与ob_start('ob_gzhandler')

B先生

我想知道如何最好地压缩我的输出。

通常,我只是ob_start('ob_gzhandler')在的顶部添加index.php,以压缩整个输出。

我使用一个简单的缓存类将生成的HTML存储在文件(index.cache.htm)中,而不是每次刷新时都对其进行重建。index.cache.htm由于具有更好的性能,因此会减少的含量

我不能压缩缓存的内容而不是使用ob_start('ob_gzhandler')吗?

示例1(缓存缓冲的输出):

ob_start();                               // start buffer
$b = ob_get_contents();                   // get buffer
ob_end_clean();                           // free buffer

$b = CustomHTMLMinifyFunction($b);        // minify the HTML
$b = gzcompress($b);                      // compress the HTML
file_put_contents('index.cache.htm', $b); // save file

示例2(缓存显式数据):

$d = 'Some data, e.g. JSON';              // some data
$d = gzcompress($d);                      // compress data
file_put_contents('data.cache.txt', $d);  // save file

有什么区别或最佳实践?提前致谢!

编辑:将压缩数据存储在文件中是否有意义?还是仅在输出数据时有用?

随机种子

ob_start

[回调]当输出缓冲器被刷新(发送)或清洁(与功能将被调用ob_flush()ob_clean()或相似的功能),或者当输出缓冲器在所述请求结束刷新到浏览器。

换句话说,ob_get_contents()将返回输出缓冲区的未压缩内容:

$log = 0;

function callback($input){
    global $log;
    $log += 1;
    return ob_gzhandler($input);
}

ob_start('callback');
$ob = ob_get_contents();

echo $log; // echoes 0, callback function was not called

ob_get_contents()如果要缓存输出数据的压缩版本,则必须压缩输出。

但是您必须配置Web服务器,以便它知道文件已预压缩(有关Apache的说明)。您不能不设置适当的头文件就将压缩文件发送到客户端

为了回答您的编辑,预压缩缓存是有意义的,否则内容将被即时压缩。还请记住,某些客户端不支持压缩:如果希望能够提供文件,则应保留文件的未压缩版本。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ob_gzhandler模式导致空白页

来自分类Dev

一起使用ob_gzhandler和ob_clean时的PHP输出缓冲区问题

来自分类Dev

PHP中有没有一种方法可以在不使用ob_gzhandler的情况下从JSON中删除空格?

来自分类Dev

WordPress的ob_start白屏

来自分类Dev

ob_start 函数的使用

来自分类Dev

从php ob_start返回数组而不是内容

来自分类Dev

PHP我应该在ob_start之后使用ob_clean

来自分类Dev

ob_start()不替换内容

来自分类Dev

ob_start()旁边出现“ false”

来自分类Dev

ob_start()-jQuery加载逻辑

来自分类Dev

PHP: Using ob_start or another method to separate variables and propogate data

来自分类Dev

PHP:使用ob_start或其他方法分隔变量并传播数据

来自分类Dev

如何在PHP中传递带有ob_start参数的回调函数?

来自分类Dev

在使用Front Controller模式时如何在PHP项目中使用ob_start()

来自分类Dev

使用ob_start()的PHP输出缓冲:脚本终止时会发生什么?

来自分类Dev

ob_start包括文件回显1

来自分类Dev

没有输出时,ob_start没用吗?

来自分类Dev

ob_start https和http之间的区别?

来自分类Dev

如何在字符串上使用ob_start?

来自分类Dev

与不使用ob_start()相比,它有什么优点?

来自分类Dev

我可以在没有 ob_start() 的情况下使用 ob_clean() 吗?

来自分类Dev

即使使用ob_start后也无法修改标头信息?

来自分类Dev

ob_start()无法在Laravel 3中创建缓冲区

来自分类Dev

如何让 ob_start() 在我的 Wordpress 插件中的类中工作?

来自分类Dev

警告:session_start():无法发送会话缓存限制器 - 即使在使用 session_start() 和 ob_start() 后,标头也已发送

来自分类Dev

Drupal ob_flush()缓慢而可变的性能

来自分类Dev

PHP-ob_end_flush()之后的输出

来自分类Dev

需要PHP Cron Job Flush / OB Flush?

来自分类Dev

MySQL COMPRESS与PHP gzcompress

Related 相关文章

  1. 1

    ob_gzhandler模式导致空白页

  2. 2

    一起使用ob_gzhandler和ob_clean时的PHP输出缓冲区问题

  3. 3

    PHP中有没有一种方法可以在不使用ob_gzhandler的情况下从JSON中删除空格?

  4. 4

    WordPress的ob_start白屏

  5. 5

    ob_start 函数的使用

  6. 6

    从php ob_start返回数组而不是内容

  7. 7

    PHP我应该在ob_start之后使用ob_clean

  8. 8

    ob_start()不替换内容

  9. 9

    ob_start()旁边出现“ false”

  10. 10

    ob_start()-jQuery加载逻辑

  11. 11

    PHP: Using ob_start or another method to separate variables and propogate data

  12. 12

    PHP:使用ob_start或其他方法分隔变量并传播数据

  13. 13

    如何在PHP中传递带有ob_start参数的回调函数?

  14. 14

    在使用Front Controller模式时如何在PHP项目中使用ob_start()

  15. 15

    使用ob_start()的PHP输出缓冲:脚本终止时会发生什么?

  16. 16

    ob_start包括文件回显1

  17. 17

    没有输出时,ob_start没用吗?

  18. 18

    ob_start https和http之间的区别?

  19. 19

    如何在字符串上使用ob_start?

  20. 20

    与不使用ob_start()相比,它有什么优点?

  21. 21

    我可以在没有 ob_start() 的情况下使用 ob_clean() 吗?

  22. 22

    即使使用ob_start后也无法修改标头信息?

  23. 23

    ob_start()无法在Laravel 3中创建缓冲区

  24. 24

    如何让 ob_start() 在我的 Wordpress 插件中的类中工作?

  25. 25

    警告:session_start():无法发送会话缓存限制器 - 即使在使用 session_start() 和 ob_start() 后,标头也已发送

  26. 26

    Drupal ob_flush()缓慢而可变的性能

  27. 27

    PHP-ob_end_flush()之后的输出

  28. 28

    需要PHP Cron Job Flush / OB Flush?

  29. 29

    MySQL COMPRESS与PHP gzcompress

热门标签

归档