文档章节

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

码上有春天
 码上有春天
发布于 2015/12/29 16:11
字数 486
阅读 48
收藏 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
码字总数 55837
作品 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
607
1
PHP页面纯静态化与伪静态化

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

Corwien
2016/04/15
130
0
探索:单台web服务器如何尽可能的提高网站性能!

一个网站,对于个人或小公司来说,前期直接上集群的开销是比较大的,那么采用单台服务器如何才能尽可能的提高网站效率呢? 我觉得首先要选择一个合适的环境,对于大多数php站点来说,运行在l...

吾爱
2013/05/14
0
2
(PHP学习笔记)实现页面静态化

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

w1sw
2016/08/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

沙箱程序之虚拟机篇

由上而下的描述。 libvirt 最顶层是管理虚拟机的入口,linux开源套件 libvirt(官网:www.libvirt.org): Introduction The libvirt project: is a toolkit to manage virtualization platfor......

simpower
31分钟前
0
0
1.05-一台电脑配置多个SSH KEY

https://www.cnblogs.com/popfisher/p/5731232.html

静以修身2025
35分钟前
0
0
美团在O2O场景下的广告营销

美团作为中国最大的在线本地生活服务平台,覆盖了餐饮、酒店、旅行、休闲娱乐、外卖配送等方方面面生活场景,连接了数亿用户和数百万商户。如何帮助本地商户开展在线营销,使得他们能快速有效...

美团技术团队
36分钟前
0
0
/etc/rc.d/rc.local设置开机启动

vi /etc/rc.d/rc.local /usr/local/apache/bin/apachectl -k start

健康的程序员
43分钟前
0
0
IntelliJ IDEA 插件 阿里巴巴Java开发手册

以前看到过个:Java开发手册(阿里巴巴-公开版),这是个pdf文档,里面描述了一些Java开发的规约,里面确实有很多好用的规约,要是在学校就有机会看看的话,那么,在毕业之后,实际工作中就会...

码代码的小司机
47分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部