首页> 实战笔录 >PHP开发笔记 >ThinkPHP ThinkPHP
TinkPHP6-tp6实现全站静态化方法
作者:小萝卜 2020-10-18 【 TP6 】 浏览 4383
简介模板完全静态化,也就是通过模板完全生成纯静态的网页,相比动态页面和伪静态页面更安全更利于SEO访问更快,1,根据模块/控制器_MD5(参数)动态递归创建目录2,file_exists判断生成的静态页是否存在,是否过期,存在并且未过期则重定向到静态网页3,不存在或者文件已过期,则file_put_contents($file,$content)函数生成静态页面
一,前言
模板完全静态化,也就是通过模板完全生成纯静态的网页,相比动态页面和伪静态页面更安全更利于SEO访问更快。
二,实现思路
1,根据模块/控制器_MD5(参数)动态递归创建目录
2,file_exists判断生成的静态页是否存在,是否过期,存在并且未过期则重定向到静态网页
3,不存在或者文件已过期,则file_put_contents($file,$content)函数生成静态页面
三,编码
1,基类中的生成前与生成后的方法
class Common extends BaseController
{
//静态模板生成目录
protected $staticHtmlDir = "";
//静态文件
protected $staticHtmlFile = "";
//判断是否存在静态
public function beforeBuild($param = []) {
//生成静态
$this->staticHtmlDir = "html".DS.$this->request->controller().DS;
//参数md5
$param = md5(json_encode($param));
$this->staticHtmlFile = $this->staticHtmlDir .$this->request->action() . '_' . $param .'.html';
//目录不存在,则创建
if(!file_exists($this->staticHtmlDir)){
mkdir($this->staticHtmlDir);
}
//静态文件存在,并且没有过期
if(file_exists($this->staticHtmlFile) && filectime($this->staticHtmlFile)>=time()-60*60*24*5) {
header("Location:/" . $this->staticHtmlFile);
exit();
}
}
//开始生成静态文件
public function afterBuild($html) {
if(!empty($this->staticHtmlFile) && !empty($html)) {
if(file_exists($this->staticHtmlFile)) {
\unlink($this->staticHtmlFile);
}
if(file_put_contents($this->staticHtmlFile,$html)) {
header("Location:/" . $this->staticHtmlFile);
exit();
}
}
}
}
2,控制器中的使用
public function getList($id = '')
{
//判断静态界面是否存在
$this->beforeBuild(array($id));
// do someing
$name = "测试静态化";
$html = View::fetch('/get_list',['name'=>$name]);
//生成静态界面
$this->afterBuild($html);
}
很赞哦! (1)
相关文章
- TP5利用scp实现从a服务器转移文件到b服务器
- TP6 databackup拓展插件,实现数据库备份下载还原代码分享
- TP6利用Session实现前置中间件验证登录
- TP5 关联模型使用(嵌套关联、动态排序以及隐藏字段)
- TP6使用JWT实现中间件验证Token,验证用户登录信息
- Tp6 $request->isAjax()不能验证axios提交的请求
- thinkphp6 使用 jwt 生成 token 中间件验证token
- TP5数据库操作时怎么过略不存在的字段
- ThinkPHP3.2项目模块结构
- TP6阿里云OSS上传报SSL certificate problem:unable to get local issuer certificate