public function index(){
$index_module_file = "static/html/module/index.html"; //静态页面模板文件路径
$index_file = "static/html/index.html"; //生成静态页面文件路径
$express_time = 3600*24*10; //设置静态文件10天过期
if(file_exists($index_file)){ //已存在静态页面
$file_ctime = filectime($index_file); //获取静态文件创建时间
if($file_ctime + $express_time > time() ){ //没有过期
echo file_get_contents($index_file); //直接输出静态文件
exit;
}else{ //已经过期
unlink($index_file); //删除静态页面文件
ob_start(); //打开缓冲区
include ($index_module_file); //在缓冲区引入静态页面模板文件
$content = ob_get_contents(); //获取缓冲区内容(生成的静态文件页面内容)
file_put_contents($index_file,$content); //写入内容到对应的静态文件中
ob_end_flush(); //关闭缓冲区并输出缓存内容
}
}else{ //不存在静态页面,重复已经过期操作(除了删除静态页面文件)
ob_start();
include ($index_module_file);
$content = ob_get_contents();
file_put_contents($index_file,$content);
ob_end_flush();
}
}
Etapas detalhadas: consulte os comentários no código ou as instruções a seguir
Etapas lógicas:
- Primeiro escreva um arquivo de modelo de página estática e armazene-o em um caminho estático (recomendado) para gerar uma página estática, ou seja, "static / html / module / index.html" no exemplo;
- O caminho do arquivo de página estática gerado por padrão é usado para determinar se a página estática em cache existe e se o tempo de criação expirou e precisa ser atualizado;
- Julgar se existe uma página estática, se existir, realizar o próximo passo (determinação do vencimento), se não existir, regenerar e enviar;
- Determine se a página estática expirou e precisa ser atualizada. Se expirar, será gerada novamente e gerada. Se não expirar, será gerada diretamente.
Etapas do arquivo de geração de buffer:
- Primeiro abra o buffer ob_start ();
- Após abrir o buffer, importe o arquivo de modelo "static / html / module / index.html" no buffer;
- Obtenha o conteúdo do buffer ob_get_contens ();
- Gerar arquivos estáticos file_put_contents ();
- Feche o buffer e envie o conteúdo do cache ob_end_flush ();