文档章节

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

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

码上生花,ECharts 作品展示赛正式启动!>>>

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
码字总数 55985
作品 0
广州
程序员
私信 提问
加载中
请先登录后再评论。
动态缓存技术之CSI,SSI,ESI

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

jims
2016/02/22
119
0
PHP--关于模板的原理和解析(php模板原理)

此内容用作笔记,以备日后查看,此内容为学习李炎恢课程而来,并非自己所创,如有问题请私信~ 将PHP代码和静态HTML代码进行分离,使代码的可读性和维护性得到显著提高。 使用模板引擎: 我们...

osc_6lj6izs9
2018/03/07
4
0
PHP页面纯静态化与伪静态化

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

Corwien
2016/04/15
312
0
请问PHP网站中的页面生成静态HTML页面是什么原理啊?

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

007杀人执照
2012/12/03
633
1
(PHP学习笔记)实现页面静态化

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

w1sw
2016/08/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

使用Hadoop分析气象数据完整版(附带完整代码)

《分布式》布置了一道小作业,让我花了7天时间学习了Hadoop。。。现在终于可以正式地做这个作业了,记录一下。 使用Hadoop分析气象数据 1 获取数据 1.1 下载数据 1.2 数据格式 1.3 合并数据 ...

osc_igulbmxy
23分钟前
14
0
kubeadm安装部署kubernetes

使用kubeadm安装部署kubernetes集群 难点:kubeadm部署kubernetes集群 是把kubernetes的各个组件(kube-apiserver kube-controller-manager kube-scheduler kube-proxy etcd coredns)作为容器......

鸿FW
23分钟前
17
0
完整安装配置MAVEN环境

标题安装配置MAVEN环境 1. 下载MAVEN 网址:https://maven.apache.org/download.cgi 2. 配置环境变量 配置环境变量钱前你要安装和配置好了JAVA在继续 我下载的MAVEN 注意:文件的路径不要有...

osc_afjz4qba
24分钟前
28
0
Arcgis Online - Renderer篇

Arcgis Online - Renderer篇 1.Renderer SimpleRenderer 2.Symbol 3.案例 1.Renderer Renderer是一种地图要素渲染器,有多种类型的渲染器用于可视化数据,每种方法都有不同的用途,可以结合地...

osc_l7zl78wt
26分钟前
12
0
.NET IDE Rider公布2020.2路线图

跨平台 .NET IDE Rider 近日公布了 2020.2 的路线图,介绍了目前正在开发的一些特性,并表示其中一些可能在接下来的版本中出现。主要包括: Windows 上的 .NET Core 后端:Rider 2020.1 已在...

osc_zitca8hu
27分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部