PHP页面静态化

<?php

class jm_cache{

  publicfunction__construct($file_dir,$cache_time=1800,$file_two=0,$file_fix='.htm'){

    $this->cache_root=dirname(__FILE__).'/../cache';//缓存存放目录

    $this->file_dir=$file_dir;

    $this->cache_time=$cache_time;

    $this->file_two=$file_two;

    $this->file_fix=$file_fix;

    $this->file_name=md5($_SERVER['REQUEST_URI']).$this->file_fix;//缓存文件名

    $this->cache_file=$this->cache_dir=$this->cache_root.'/'.$this->file_dir;//缓存的二级文件夹

    if($this->file_two==1)$this->cache_dir=$this->cache_root.'/'.$this->file_dir.'/'.substr($this->file_name,0,2);//缓存的最终文件夹

    $this->cache_url=$this->cache_dir.'/'.$this->file_name;//文件存放的完整路径

     

    //GET方式请求才缓存,POST之后一般都希望看到最新的结果

    if($_SERVER['REQUEST_METHOD']=='GET'){

      //如果缓存文件存在,并且没有过期,就把它读出来。

      if(file_exists($this->cache_url) && time()-filemtime($this->cache_url)<$this->cache_time){

        $fp=fopen($this->cache_url,'rb');

        fpassthru($fp);

        fclose($fp);

        exit;

      }elseif(!file_exists($this->cache_dir)){//判断文件夹是否存在,不存在则创建

        if(!file_exists($this->cache_file)){

          if(!file_exists($this->cache_root)){

            mkdir($this->cache_root,0777);

            chmod($this->cache_root,0777);

          }

          mkdir($this->cache_file,0777);

          chmod($this->cache_file,0777);

          if($this->file_two==1){

            mkdir($this->cache_dir,0777);

            chmod($this->cache_dir,0777);

          }

        }

      }

      //回调函数 AutoCache

      //ob_start("AutoCache");

      ob_start(array($this,"AutoCache"));

    }else{

      //不是GET的请求就删除缓存文件

      if(file_exists($this->cache_url))unlink($this->cache_url);

    }

  }

  functionAutoCache($contents){

    $fp=fopen($this->cache_url,'wb');

    fwrite($fp,$contents);

    fclose($fp);

    chmod($this->cache_url,0777);

    //生成新缓存的同时,自动删除所有的老缓存,以节约空间,可忽略。

    $this->DelOldCache();

    return$contents;

  }

  functionDelOldCache(){

    chdir($this->cache_root);

    foreach(glob("*/*".$this->file_fix)as$file){

      if(time()-filemtime($file)>$this->cache_time)unlink($file);

    }

  }

}

?>

转载于:https://my.oschina.net/u/2342481/blog/396493

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值