文档章节

php将动态页面缓存为静态html原理

码上有春天
 码上有春天
发布于 2015/12/29 16:11
字数 486
阅读 59
收藏 0

1.使用ob缓存

$gid  = $_GET['gid']+0;//商品id  
$goods_statis_file = "goods_file_".$gid.".html";//对应静态页文件  
$expr = 3600*24*10;//静态文件有效期,十天
/*
*检查是否已有缓存的静态文件
*如果有,再判断缓存是否过期,没过期就直接读取静态文件并输出,过期就删除后重建缓存再输出
*如果没有,就创建缓存后输出
*/  
if(file_exists($goods_statis_file)){  
      $file_ctime =filectime($goods_statis_file);//文件创建时间  
      if($file_ctime+$expr>time()){//如果没过期  
         echo file_get_contents($goods_statis_file);//输出静态文件内容  
         exit;  
      }else{//如果已过期  
            unlink($goods_statis_file);//删除过期的静态页文件  
            ob_start();  
   
            //从数据库读取数据,并赋值给相关变量  
            //include ("xxx.html");//加载对应的商品详情页模板 ,并渲染模板 
   
            $content = ob_get_contents();//渲染后的内容赋值给$content变量  
            file_put_contents($goods_statis_file,$content);//写入内容到对应静态文件中  
            ob_end_flush();//输出商品详情页信息  
      }  
}else{  
  ob_start();  
   
  //从数据库读取数据,并赋值给相关变量  
  //include ("xxx.html");//加载对应的商品详情页模板,并渲染模板  
   
  $content = ob_get_contents();//渲染后的内容赋值给$content变量  
  file_put_contents($goods_statis_file,$content);//写入内容到对应静态文件中  
  ob_end_flush();//输出商品详情页信息  
   
}

2.使用memecache

$gid  = $_GET['gid']+0;//商品id  
$goods_statis_content = "goods_content_".$gid;//对应键  
$expr = 3600*24*10;//有效期,十天  
   
$mem = new Memcache;  
$mem->connect('memcache_host', 11211);  
   
$mem_goods_content = $mem->get($goods_statis_content);  
   
if($mem_goods_content){  
      echo $mem_goods_content;  
}else{  
  ob_start();  
   
  //从数据库读取数据,并赋值给相关变量  
   
  //include ("xxx.html");//加载对应的商品详情页模板  
   
  $content = ob_get_contents();//把详情页内容赋值给$content变量  
  $mem->add($goods_statis_content,$content, false, $expr);  
  ob_end_flush();//输出商品详情页信息  
   
}
memcached是以键值对的形式缓存到内存中,key默认最大不能超过128个字节,value默认大小是1M,而1M大小足以满足大多数网页的存储。


© 著作权归作者所有

共有 人打赏支持
码上有春天
粉丝 5
博文 82
码字总数 55888
作品 0
广州
程序员
私信 提问
动态缓存技术之CSI,SSI,ESI

平时我们谈页面,大都数是以页面为单位的。 一、CSI (Client Side Includes) 含义:通过iframe、javascript、ajax等方式将另外一个页面的内容动态包含进来。 原理:整个页面依然可以静态化为...

jims
2016/02/22
44
0
请问PHP网站中的页面生成静态HTML页面是什么原理啊?

接触网站有一段时间了,非常想弄清楚将动态的PHP页面生成静态的HTML页面用的是什么原理啊?究竟是怎么做的啊?跟Smarty模板中的缓存机制有关吗?像dedecms和PHPcms中一键生成HTML是怎么弄的啊...

007杀人执照
2012/12/03
614
1
PHP页面纯静态化与伪静态化

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

Corwien
2016/04/15
130
0
(PHP学习笔记)实现页面静态化

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

w1sw
2016/08/15
0
0
构架高性能WEB网站的几点知识

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

吞吞吐吐的
2017/10/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

jquery通过id显示隐藏

var $div3 = $('#div3'); 显示 $div3.show(); 隐藏 $div3.hide();

yan_liu
今天
3
0
《乱世佳人》读书笔记及相关感悟3900字

《乱世佳人》读书笔记及相关感悟3900字: 之前一直听「荔枝」,后来不知怎的转向了「喜马拉雅」,一听就是三年。上班的时候听房产,买房了以后听装修,兴之所至时听旅行,分手后听亲密关系,...

原创小博客
今天
3
0
大数据教程(9.6)map端join实现

上一篇文章讲了mapreduce配合实现join,本节博主将讲述在map端的join实现; 一、需求 实现两个“表”的join操作,其中一个表数据量小,一个表很大,这种场景在实际中非常常见,比如“订单日志...

em_aaron
今天
3
0
cookie与session详解

session与cookie是什么? session与cookie属于一种会话控制技术.常用在身份识别,登录验证,数据传输等.举个例子,就像我们去超市买东西结账的时候,我们要拿出我们的会员卡才会获取优惠.这时...

士兵7
今天
3
0
十万个为什么之为什么大家都说dubbo

Dubbo是什么? 使用背景 dubbo为什么这么流行, 为什么大家都这么喜欢用dubbo; 通过了解分布式开发了解到, 为适应访问量暴增,业务拆分后, 子应用部署在多台服务器上,而多台服务器通过可以通过d...

尾生
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部