zoukankan      html  css  js  c++  java
  • gzip1

    经过GZIP压缩后页面大小可以变为原来的30%甚至更小。要实现GZIP压缩页面需要浏览器和服务器共同支持,

    实际上就是服务器压缩,传到浏览器后浏览器解压并解析。浏览器那边不需要我们担心,因为现在绝大多数浏览器都支持解析GZIP过的页面。我们只要把页面在服务器端压缩再输出到浏览器就行了。

    1  正如要制作压缩饼干,先要拿到原料,要压缩一个页面,首先要获得要输出的内容。PHP中的ob_start()(ob => output buffer)函数可以实现这个功能,它可以把程序里准备输出的内容先放到一个叫做“缓冲区”的地方,当然,你可以理解为制作压缩饼干的暂时放原料的工作 台。

    2   这个函数一定要在页面输出之前使用,所以一般把它放在代码的最顶端。因为它就像是一个工作台,所以你要在原料到来之前就要准备好它,否则原料来了没地方放,会出问题的。用ob_start()得到要压缩的页面之后,可以压缩页面了  不过好像还缺少一台压缩机,我们用PHP带的zlib扩展做一台

    3  
    function ob_gzip($content) // $content 就是要压缩的页面内容,或者说饼干原料
    {        
            if(        !headers_sent() && // 如果页面头部信息还没有输出
                    extension_loaded("zlib") && // 而且zlib扩展已经加载到PHP中
                    strstr($_SERVER["HTTP_ACCEPT_ENCODING"],"gzip")) //而且浏览器说它可以接受GZIP的页面
            {
                    $content = gzencode($content." //此页已压缩",9); 为准备压缩的内容贴上“//此页已压缩”的注释标签,然后用zlib提供的gzencode()函数执行级别为9的压缩,这个参数值范围是0-9,0表示无压缩,9表示最大压缩,当然压缩程度越高越费CPU。
                    
                    //然后用header()函数给浏览器发送一些头部信息,告诉浏览器这个页面已经用GZIP压缩过了!
                    header("Content-Encoding: gzip");
                    header("Vary: Accept-Encoding");
                    header("Content-Length: ".strlen($content));
            }
            return $content; //返回压缩的内容,或者说把压缩好的饼干送回工作台。
    }
    //压缩机做好了之后,我们把压缩机放到工作台上,于是原来的ob_start()变成


    ob_start('ob_gzip'); //没错,就是给ob_start()加一个参数,参数名就是我们刚才做的“压缩机”的函数名。这样当内容进入缓冲区后PHP就会调用ob_gzip函数把它压缩了。
    好了,所有的工作已完成,最后交货:

    1. ob_end_flush(); //结束缓冲区,输出内容。当然,不用这个函数也行,因为程序执行到最后会自动将缓冲区内容输出。

     

    //完整的示例如下:

      1. <?php
      2. //启用一个带有ob_gzip压缩机的工作台
      3. ob_start('ob_gzip');

      4. //准备一些待压缩的内容
      5. for($i=0; $i<100; $i++)
      6. {
      7.         echo('这里是压缩饼干的原料,这里是压缩饼干的原料,原料');
      8. }

      9. //输出压缩成果
      10. ob_end_flush();

      11. //这是ob_gzip压缩机
      12. function ob_gzip($content)
      13. {       
      14.         if(        !headers_sent() &&
      15.                 extension_loaded("zlib") &&
      16.                 strstr($_SERVER["HTTP_ACCEPT_ENCODING"],"gzip"))
      17.         {
      18.                 $content = gzencode($content." //此页已压缩",9);
      19.                
      20.                 header("Content-Encoding: gzip");
      21.                 header("Vary: Accept-Encoding");
      22.                 header("Content-Length: ".strlen($content));
      23.         }
      24.         return $content;
      25. }
      26. ?>
  • 相关阅读:
    git
    node cheerio
    Git是目前世界上最先进的分布式版本控制系统
    精华 ionic入门之色彩、图标、边距和界面组件:列表
    如何将腾讯视频的qlv格式转换为mp4格式
    php无限级分类实战——评论及回复功能
    Yii2 前后台登陆退出分离、登陆验证
    linux 更改文件所属用户及用户组
    wdcp 开启某个Mysql数据库远程访问
    Rem实现自适应初体验
  • 原文地址:https://www.cnblogs.com/ldms/p/8317743.html
Copyright © 2011-2022 走看看