• PHP 网站优化小记


    Apache+php 网站性能优化

    1.开启GZIP压缩(针对文件大小)  网页大小可以压缩率可以达到百分之70多;

       一、打开php.ini配置文件,找到zlib.output_compression = Off,将

    zlib.output_compression = Off;

    zlib.output_compression_level = -1

    修改为

    zlib.output_compression = On;
    zlib.output_compression_level = 6

    php gzip配置知识点:

      1、默认php是不开启zlib整站压缩输出的,而是通过对需要压缩输出的页面使用ob_gzhandler函数实现,两者只能二选一,否则会报错。

      2、zlib.output_compression默认值为Off,你可以将其设置为On,或者output buffer size(默认为4k)

      3、zlib.output_compression_level代表压缩比,默认推荐设置压缩比值为6,可选范围为1-9,-1代表关闭php zlib(gzip)压缩

      二、保存php.ini配置文件,并重启apache服务器

      三、打开apache 配置文件httpd.conf,配置装载deflate_module

         #LoadModule deflate_module modules/mod_deflate.so

          去除开头的#号;

    设置压缩类型

    <IfModule deflate_module>  
        SetOutputFilter DEFLATE  
        # Don’t compress images and other  
        SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary  
        SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary  
        SetEnvIfNoCase Request_URI .(?:pdf|doc)$ no-gzip dont-vary  
        AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css  
        AddOutputFilterByType DEFLATE application/ms* applicationnd* application/postscript application/javascript application/x-javascript

    </IfModule>  

    并重启apache即可。

    2.减少request

      一、文件合并

           方法(1)

                        

    下面是使用PHP通过GZIP压缩CSS的实例。

    在存放CSS的文件夹中新建一个style.php文件,在此文件中加入以下代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23

    if(extension_loaded('zlib')){//检查服务器是否开启了zlib拓展
    ob_start('ob_gzhandler');
    }
    header ("content-type: text/css; charset: gb2312");//注意修改到你的编码
    header ("cache-control: must-revalidate");
    $offset = 60 * 60 * 24;//css文件的距离现在的过期时间,这里设置为一天
    $expire = "expires: " . gmdate ("D, d M Y H:i:s", time() + $offset) . " GMT";
    header ($expire);
    ob_start("compress");
    function compress($buffer) {//去除文件中的注释
    $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
    return $buffer;
    }
     
    //包含你的全部css文档
    include('global.css');
    include('layout.css');
     
    if(extension_loaded('zlib')){
    ob_end_flush();//输出buffer中的内容,即压缩后的css文件
    }
    ?>

    如果你处理的是JavaScript文件,你需要将上面代码中的第5行的Content-type修改成以下:

    header ("content-type:application/x-javascript; charset: gb2312");

    同样需要注意的是文件的编码,这里我用的是gb2312,如果你采用的是UTF-8或其他编码,修改成对应的即可。

    修改完成之后,在原引入CSS和JS文件的地方,将.css后缀/.js后缀的文件更换成这个style.php文件即可,如:

    script type="text/javascript" src="http://www.i1323.net/scripts/11.js.php?v=121

    由于上面代码中使用到了HTTP的Expires(过期)属性用于在客户端缓存CSS/JS代码,所以,如果过期时间设置的太长(比如2020 年),当你在服务器端修改了JS/CSS代码时,客户端可能不会立即生效。解决办法是:在php文件后面添加一个随机参数,如上面例子中的v=121,当下次修改了文件时,记得相应修改此随机参数即可。

         方法(2)

       可以使用第三方框架如 Mint 解压到根目录就行 使用很方便 例如下:

    <SCRIPT src="min/f=/js/jquery1.8.js,/js/global.js,/js/index.js,/js/jquery-powerFloat.js,/js/util.js," type=text/javascript></SCRIPT>
     一次加载所有所需的JS

      二、懒加载

    例如使用瀑布流,按要求优化首次加载的资源特别是图片比较多的时候。使用AJAX加载会较多。

    三、资源大小优化

    JS、CSS、图片 等资源 尽量將大小压缩至最小

    JS、CSS 推荐工具yuicompressor

  • 相关阅读:
    融云技术分享:全面揭秘亿级IM消息的可靠投递机制
    企业微信的IM架构设计揭秘:消息模型、万人群、已读回执、消息撤回等
    喜马拉雅亿级用户量的离线消息推送系统架构设计实践
    uni-app 项目使用 npm 包中的小程序自定义组件
    Leetcode563. 二叉树的坡度
    vue看源码遇到 报错
    windows使用
    mysql 显示行号
    从优秀到卓越
    【面经】阿里蚂蚁金服22秋招-Java后端
  • 原文地址:https://www.cnblogs.com/zhangqifeng/p/2843281.html
Copyright © 2020-2023  润新知