文档章节

PHP页面静态化

ks_无名
 ks_无名
发布于 2015/04/06 15:23
字数 412
阅读 9
收藏 0
点赞 0
评论 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
浦东
小蚂蚁学习页面静态化(1)——静态化的原理

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

嗜学如命的小蚂蚁
2015/10/09
242
2
(PHP学习笔记)实现页面静态化

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

w1sw
2016/08/15
0
0
PHP页面纯静态化与伪静态化

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

Corwien
2016/04/15
130
0
php页面静态化

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

just_wkj
2016/01/02
114
0
php页面静态化技术;学习笔记

demo

grootzhang
2016/04/12
0
0
Discuz! X2 下 URL 静态化的实现方法

在后台 => 全局 => SEO设置=> URL 静态化,开启各个页面的静态化后,在站点界面上,可以看到所有的链接都变成静态地址格式。下面我们看一下这个过程是怎么实现的。(以主题列表页为例) 众所...

啊和
2012/07/27
0
0
如何实现部分静态发布

目前我采用php + smarty来实现网站页面的静态化。 我的模版结构是有个base.html里面通过include分别加入了header、banner、footer等页面公共模块和详细页面的模块。 通过通用的页面的静态化方...

__FresHmaN
2013/10/13
173
2
构架高性能WEB网站的几点知识

前言: 对于构架高性能的web网站大家都很感兴趣,本文从几点粗谈高性能web网站需要考虑的问题。 HTML静态化 什么是html静态化? 说得简单点,就是把所有不是.htm或者.html的页面改为.htm或者...

吞吞吐吐的
2017/10/11
0
0
nginx的pathinfo配置

前言: 首先,什么是pathinfo模式呢? pathinfo是伪静态的一种,我们先解释一下伪静态的概念,伪静态页面是静态URL与动态URL互通的一个桥梁,它是指动态网址通过URL重写的手段去掉其动态参数...

dingdayu
2016/04/21
72
0
静态HTML页面的访问量统计实现

摘要:第一步处理的就是文章页面的静态化,静态化之后,发现访问量统计成了一个问题。大家都知道的,静态页面的程序本身是不能调用数据库来实现当前页面访问量统计的,包括实现被访问次数、访...

魏邪乎
2014/07/21
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

对基于深度神经网络的Auto Encoder用于异常检测的一些思考

一、前言 现实中,大部分数据都是无标签的,人和动物多数情况下都是通过无监督学习获取概念,故而无监督学习拥有广阔的业务场景。举几个场景:网络流量是正常流量还是攻击流量、视频中的人的...

冷血狂魔
17分钟前
0
0
并发设计之A系统调用B系统

A-->B A在发送请求之前,用乐观锁,减少对B的重复调用,这样一定程度上是幂等性。 比如A系统支付功能,要调用B系统进行支付操作,但是前端对"支付"按钮不进行控制,即用户会不断多次点击支付...

汉斯-冯-拉特
37分钟前
0
0
HTTP协议通信原理

了解HTTP HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则。计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求信息和服务。 HTTP使用...

寰宇01
今天
0
0
【Java动态性】之反射机制

一、Java反射机制简介

谢余峰
今天
1
0
Centos 6.X 部署环境搭建

1.Linux学习笔记CentOS 6.5(一)--CentOS 6.5安装过程

IT追寻者
今天
0
0
博客即同步至腾讯云+社区声明

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=8vy9bsmadbko...

xiaoge2016
今天
1
0
大数据教程(3.1):Linux系统搭建网络YUM源服务器

博主在前面的2.5章节讲述了linux系统本地YUM服务器的搭建和httpd轻量级静态网站服务器的安装,本节博主将为大家分享内网环境中搭建自己的网络YUM服务器的全过程。如果大家对本地YUM服务器还不...

em_aaron
今天
1
0
蚂蚁技术专家:一篇文章带你学习分布式事务

小蚂蚁说: 分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在这几年越来越火的微服务架构中,几乎可以说是无法避免,本文就围绕分布式事务...

Java大蜗牛
今天
1
0
新的Steam应用将拓展服务项目

导读 未来几周,Steam将推出两个免费的应用程序Steam Link和Steam Video。这两个应用程序都旨在拓展Steam平台的业务和便利性。 即将开放的Steam Link应用程序最先提供了Android测试版,它将允...

问题终结者
今天
0
0
golang 第三方包的使用总结

golang 第三方包的安装的方法: 1. go get 安装 $ go get github.com/gin-gonic/gin 注意:执行go get 命令需要先安装git命令,并配置git全局变量。 2. 源码包安装 由于国内网络问题,很多时...

科陆李明
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部