文档章节

PHP页面静态化

ks_无名
 ks_无名
发布于 2015/04/06 15:23
字数 412
阅读 9
收藏 0

<?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);

    }

  }

}

?>

本文转载自:http://www.oschina.net/code/snippet_105076_7834

共有 人打赏支持
ks_无名
粉丝 0
博文 19
码字总数 1269
作品 0
浦东
私信 提问
(PHP学习笔记)实现页面静态化

当我们在访问各个门户信息网站时,主页都会给我们显示各种头条、导航信息(例如新闻网)。我们可以想象,面对众多的数据库访问等操作,在我们访问这些网页的同时加载速度将会变得很慢。众所周...

w1sw
2016/08/15
0
0
小蚂蚁学习页面静态化(1)——静态化的原理

关于页面php文件执行阶段 语法分析——》编译——》运行 如何优化页面的响应时间 动态页面静态化 优化数据库 使用负载均衡 使用缓存 页面静态化能够解决的问题 1.减少服务器脚本的计算时间 ...

嗜学如命的小蚂蚁
2015/10/09
242
2
php页面静态化

网站一直在加载,很慢,处理方式多种; 0.页面静态化; 1.优化数据库; 2.负载均衡; 3.使用缓存技术 关于页面静态化 使用函数如 fileputcontents($filename,$string); php的输出缓冲区 开启...

just_wkj
2016/01/02
114
0
PHP页面纯静态化与伪静态化

在很多地方都看到有PHP整站静态化的东东,怪唬人的。。其实,你会静态化一个页面,那么别说整站了,想静态化多少都可以。所以关键是,首先要知道怎么静态化一个页面,了解静态化的原理是关键...

Corwien
2016/04/15
130
0
php页面静态化技术;学习笔记

demo

grootzhang
2016/04/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Django进阶 1.1 ORM基础—ORM 1.2.1 增删改查之查询 1.2.2 删改增 (1) 1.2.3 删改增 (2)

ORM基础 ORM是Django操作数据库的API,Django的作者将sql语句封装在里面供我们使用。 我们前面还提到过Django提供一个模拟数据库的工具,sqlite,供我们学习测试使用。 如果我们想使用mysql...

隐匿的蚂蚁
今天
1
0
Windows 上安装 Scala

在安装 Scala 之前需要先安装 Java 环境,具体安装的详细方法就不在这里描述了。 您可以自行搜索我们网站中的内容获得其他网站的帮助来获得如何安装 Java 环境的方法。 接下来,我们可以从 ...

honeymose
今天
3
0
数据库篇多表操作

第1章 多表操作 实际开发中,一个项目通常需要很多张表才能完成。例如:一个商城项目就需要分类表(category)、商品表(products)、订单表(orders)等多张表。且这些表的数据之间存在一定的关系...

stars永恒
今天
3
0
nginx日志自动切割

1.日志配置(Nginx 日志) access.log----记录哪些用户,哪些页面以及用户浏览器,IP等访问信息;error.log------记录服务器错误的日志 #配置日志存储路径:location / {      a...

em_aaron
昨天
5
0
java 反射

基本概念 RTTI,即Run-Time Type Identification,运行时类型识别。RTTI能在运行时就能够自动识别每个编译时已知的类型。   要想理解反射的原理,首先要了解什么是类型信息。Java让我们在运...

细节探索者
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部