php将动态页面缓存为静态html原理
php将动态页面缓存为静态html原理
码上有春天 发表于2年前
php将动态页面缓存为静态html原理
  • 发表于 2年前
  • 阅读 39
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

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

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大小足以满足大多数网页的存储。


标签: php缓存html
共有 人打赏支持
粉丝 6
博文 75
码字总数 54169
×
码上有春天
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: