美文网首页
PHP页面全静态化压缩缓存

PHP页面全静态化压缩缓存

作者: youngxs | 来源:发表于2019-04-03 13:13 被阅读0次

页面静态化处理的主要作用是:减少数据库的访问,减少服务器的带宽。

在高并发得情况下,大量的用户在访问某个页面的时候,首先PHP需要从数据库里面读取数据,然后在数据返回给前端,接着前端在将数据呈现在页面上,这一系列的情况下,首先大量得消耗了服务器本身的带宽,其次数据库的I/O也会被占用,一般mysql的吞吐量在800-1000的情况下是属于满载状态,超过这个数值,那剩下得请求就会处于堵塞等待状态,因此出现了页面静态化处理得技术。

它的实现原理就是:第一个用户在请求得到页面后,PHP会将整个页面的内容获取到,然后存储在一个文件中,当第二个用户或者第N个用户在访问这个页面的时候,PHP就直接读取这个文件然后将内容返回给用户。这样得话,首先减少了对数据的读取,其次也减少了,前后端之间的交互。其次也减少了服务器的带宽和流量。若是在这个静态化设置的前提下,在优化一下,那就是将存储的文件进行压缩,比如:访问一个文章页面,PHP经过处理后将内容存在一个article.html,这个文件得大小为30K,若PHP将内容压缩一下,在存入article.html文件,文件可能就变成15K或者更小。

PHP对内容进行压缩得处理,说白了,就是讲内容中的一些注释,换行,空白符给除去。下面是我自己写的一个类,话不多说,贴代码。

方法1,判断缓存文件是否存在(其中$time 指得是缓存的失效)

判断缓存文件是否存在

方法2,获取缓存文件内容并且返回

获取缓存内容

方法3,制作缓存文件,其中$this->compress_html()就是将内容进行压缩

内容缓存

方法4,压缩内容

内容压缩

下面就是对方法进行实例:以laravel为例

案例

下面看一下该文件。

压缩后的内容

贴一下代码:

class CompressHtml

{

    /*@name:youngxs

    * $path 缓存路径    * $time 判断缓存的有效期* */

    public function is_file_html($path,$time=3600){

        if(file_exists($path)&& time()-filemtime( $path )<$time){

            return true;

        }else{

            return false;

        }

}

    /*@name:youngxs

    * $path 缓存路径* */

    public function get_html_detail($path){

        if(file_exists($path)){

            $get_html_content=file_get_contents($path);

            return $get_html_content;

        }else{

            return false;

         }

  }

    /*@name:youngxs

    * $path 缓存路径    * @content 需要静态化的内容* */

    public function put_html_data($path,$content){

        ob_start();//开启缓存

        $content=$this->compress_html($content);

        echo $content;

        file_put_contents( $path, ob_get_clean());

        return $content;

     }

    /*@name:youngxs

    * 压缩html : 清除换行符,清除制表符,去掉注释标记* @param $string

    * @return压缩后的$string

   * */

    function compress_html($string){

        $string=str_replace("\r\n",'',$string);//清除换行符

        $string=str_replace("\n",'',$string);//清除换行符

        $string=str_replace("\t",'',$string);//清除制表符

        $pattern=array(

            "/> *([^ ]*) *</",//去掉注释标记

            "/[\s]+/",

            "/<!--[^!]*-->/",

            "/\" /",

            "/ \"/",

            "'/\*[^*]*\*/'"

        );

        $replace=array (

            ">\\1<",

            " ",

            "",

            "\"",

            "\"",

            ""

        );

        return preg_replace($pattern, $replace, $string);

}

}

相关文章

  • PHP页面全静态化压缩缓存

    页面静态化处理的主要作用是:减少数据库的访问,减少服务器的带宽。 在高并发得情况下,大量的用户在访问某个页面的时候...

  • php-面试第三篇

    42、PHP缓存技术有哪些?1)、全页面静态化缓存2)、页面部分缓存3)、数据缓存4)、查询缓存5)、按内容变更进...

  • PHP中9大缓存技术总结

    1、全页面静态化缓存 也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解...

  • PHP中9大缓存技术总结

    1、全页面静态化缓存 也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解...

  • PHP页面静态化...未完

    1.基本方式 file_put_contents()Hanshu使用PHP内置缓存机制实现页面静态化 -outp...

  • 听欢哥讲PHP页面静态化

    页面静态化 1、什么是PHP静态化 PHP静态化的简单理解就是使网站生成页面以静态HTML的形式展现在用户面前。 ...

  • nginx 静态文件缓存配置

    网站的一些静态文件不经常更新,除了做压缩处理以优化加载,还需要做一些前端缓存;当然,接口或者全页面也可以缓存 缓存...

  • django页面静态化和缓存小结

    写在前面 基础的学了页面静态化和缓存,这篇文章来总结一下。 页面静态化和页面数据缓存 对网站本身性能的优化,减少数...

  • 静态化方法

    静态化方法 页面静态化的方法,分为两种,一种是伪静态,就是url 重写,一种是你真的静态化。下面介绍PHP中页面静...

  • 海量数据解决方案

    缓存和页面静态化 缓存:将从数据库中获取的结果暂时保存起来,在下次使用时无需重新到数据库中获取。页面静态化:将程序...

网友评论

      本文标题:PHP页面全静态化压缩缓存

      本文链接:https://www.haomeiwen.com/subject/vvmabqtx.html