我是用thinkphp3.2开发的后台管理系统,现在需要生成静态页
生态静态页有两种方法,
第一种:是在后台调用实例化前台控制器,然后获取返回的模板内容再保存到文件中。这种方法相对第二种快一些。 public function listHtml($catid,$p,$classpath){
$_GET=array(
"catid"=>$catid,
"p"=>$p,
"isSystemMakeHtml"=>1,
);
$obj=new \Home\Controller\ListController();
$content=$obj->index();
$filename=$p>1?("index_".$p.".html"):"index.html";
$htmlfile=".".$classpath.$filename;
\Think\Storage::put($htmlfile,$content,'html');
}第二种:利用http请求,然后用file_get_contents抓取内容代码,再保存到文件。 public function listHtml($catid,$p,$classpath){
$url = 'http://'.$_SERVER['HTTP_HOST'].U('Home/List/index',array("catid"=>$catid,"p"=>$p,"isSystemMakeHtml"=>1));
$content = @file_get_contents($url);
$filename=$p>1?("index_".$p.".html"):"index.html";
$htmlfile=".".$classpath.$filename;
\Think\Storage::put($htmlfile,$content,'html');
}两种方法利弊:
方法1优点:主要是不需要求过http请求,直接实例化。速度快一些;
方法1缺点:因为我是实例化Home模块下的控制器,模板里可能会用到home模块下的函数,但是生成静态页是在后台完成的。这样当模板调用home模板下的函数的时候,在后台生成就会报错,这个也是致使的缺点。还有就是当前台模板出错的时候方法生成页面就中止了。方法2优点:这个优点就是方法1的缺点,只要前台有内容输出就可以保存页面,哪怕程序出错也会生成。活会一直干下去;
方法2缺点:速度慢,速度慢,总之就是慢。200个静态页要生成3分钟左右,上万个的话时间更是长。求大家支支招。
生态静态页有两种方法,
第一种:是在后台调用实例化前台控制器,然后获取返回的模板内容再保存到文件中。这种方法相对第二种快一些。 public function listHtml($catid,$p,$classpath){
$_GET=array(
"catid"=>$catid,
"p"=>$p,
"isSystemMakeHtml"=>1,
);
$obj=new \Home\Controller\ListController();
$content=$obj->index();
$filename=$p>1?("index_".$p.".html"):"index.html";
$htmlfile=".".$classpath.$filename;
\Think\Storage::put($htmlfile,$content,'html');
}第二种:利用http请求,然后用file_get_contents抓取内容代码,再保存到文件。 public function listHtml($catid,$p,$classpath){
$url = 'http://'.$_SERVER['HTTP_HOST'].U('Home/List/index',array("catid"=>$catid,"p"=>$p,"isSystemMakeHtml"=>1));
$content = @file_get_contents($url);
$filename=$p>1?("index_".$p.".html"):"index.html";
$htmlfile=".".$classpath.$filename;
\Think\Storage::put($htmlfile,$content,'html');
}两种方法利弊:
方法1优点:主要是不需要求过http请求,直接实例化。速度快一些;
方法1缺点:因为我是实例化Home模块下的控制器,模板里可能会用到home模块下的函数,但是生成静态页是在后台完成的。这样当模板调用home模板下的函数的时候,在后台生成就会报错,这个也是致使的缺点。还有就是当前台模板出错的时候方法生成页面就中止了。方法2优点:这个优点就是方法1的缺点,只要前台有内容输出就可以保存页面,哪怕程序出错也会生成。活会一直干下去;
方法2缺点:速度慢,速度慢,总之就是慢。200个静态页要生成3分钟左右,上万个的话时间更是长。求大家支支招。
应该是你的前端模块进行逻辑判断:后台是否设置了缓存->如果设置了启用缓存->判断缓存文件是否存在->缓存文件不存在则自动生成缓存文件。
你的后端逻辑应该是:
缓存配置:配置某个页面是否启用缓存
新增/更新数据时:更新缓存文件这样前端始终拿到的都是最新的缓存数据
因为有的页面本身也可能调用其它页面的最新信息,比如详情详情最下面可能有一个最新新闻。那么最新添加新闻好,肯定要更新其它页面,便于显示最新的内容。