方案:使用模板替换技术(没有时间延迟)
代码如下 | 复制代码 |
/* |------------------ | <www.111cn.net> |------------------ */ $oper = $_POST['oper'];//添加操作 if($oper === 'add') { $title = $_POST['title']; $content = $_POST['content']; //如果严格按MVC,这里应该调用model了 $con = mysql_connect('localhost', 'root', '123456'); if(!$con) { die('连接失败!'); } mysql_select_db('news', $con); $sql = "insert into question(null, '$title', '$content', '')"; if(mysql_query($sql, $con)) { //1.生成静态文件 $id = mysql_insert_id(); $html_filename = 'news-id'.$id.'.html'; $html_fp = fopen($html_filename, 'w'); //2.把模板文件读取(news.html) $fp = fopen('news.tpl', 'r'); //r 只读方式打开; r+ 读写方式打开; w 写入方式打开:文件内容将被清空!如果文件不存在将创建; a 以追加的方式打开 //3.循环读取 //如果没有读到文件的最后,就一直读取 while(!feof($fp)) { //一行行读 $row = fgets($fp); //把占位符替换掉 => 可以自定义完整的替换规则函数 $row = str_replace('%title%', $title, $row);//如果不重新赋值$row, $row值不会改变 $row = str_replace('%content%', $content, $row); fwrite($html_fp, $row);//4.将内容写入静态文件 } //5.文件必须关闭 //news.tpl模板文件 |
方案:如果静态文件存在,且生成时间30秒内,直接返回静态页面(有时间延迟)
代码如下 | 复制代码 |
/* |------------------ | <www.111cn.net> |------------------ */ header('content-type:text/html;charset=utf-8'); $id = $_GET['id'] ? intval($_GET['id']) : ''; if($id === '') die('请输入要查询的新闻id!'); $html_file = "news-id-".$id.".html"; //1.主要代码 //这里也可以使用DB工具类 |
从上面看我们头一种生成静态页面的方法更合适于页面的后期维护哦,后者是比较难维护的哦,推荐使用第一种办法。