PHP页面静态化两种实现方案(模板标签)

方案:使用模板替换技术(没有时间延迟)

 代码如下 复制代码

/*
|------------------
| <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.文件必须关闭
        fclose($html_fp);
        fclose($fp);
       
        echo "添加成功。<a href='newslist.php'>点击查看新闻!</a>";
    }
    else
    {
        die('添加失败!');
    }
}
//此时在新闻列表内,点击查看详情的链接,可以改成生成的静态页面地址,直接进入静态文件。

//news.tpl模板文件
/*
<html>
    <head>
        <meta charset="utf-8" />
        <title>%title%</title>
    </head>
    <body>
        <h1>%title%</h1>
        <pre>%content%</pre>
    </body>
</html>
*/

方案:如果静态文件存在,且生成时间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.主要代码
if(file_exists($html_file) && filemtime($html_file) + 30 >= time())
{
    echo '静态页面:';
    echo file_get_contents($html_file);exit;
}

//这里也可以使用DB工具类
$con = mysql_connect('localhost', 'root', '123456');
if(!$con)
{
    die('连接失败!');
}
mysql_select_db('testdb', $con);
$sql = "select * from bo_question where question_id = $id";
$res = mysql_query($sql, $con);
if($row = mysql_fetch_assoc($res))
{
    ob_start();//2.启动ob缓存
    header('content-type:text/html;charset=utf-8');
    echo '<head><meta http-equiv="content-type" content="text/html;charset=utf-8" /></head>';
    echo '<table style="border:1px solid red;" cellspacing="0" width="400px" height="200px">';
    echo '<tr><td>问题详细内容</td></tr>';
    echo "<tr><td>标题:{$row['question_title']}</td></tr>";
    echo "<tr><td>详细:{$row['question_detail']}</td></tr>";
    echo '</table>';
    $ob_str = ob_get_contents();
    //3.把ob_str保存到一个静态文件页面,取文件名有讲究:1.唯一标识该新闻 2.利于seo
    file_put_contents("news-id-".$id.".html", $ob_str);
  
  //关闭数据库连接(非必须; 非长连接下,脚本执行完会自动关闭)
  mysql_close($con);
}else{
    echo '没有查询到资源!';
}

从上面看我们头一种生成静态页面的方法更合适于页面的后期维护哦,后者是比较难维护的哦,推荐使用第一种办法。

时间: 2024-10-25 11:46:02

PHP页面静态化两种实现方案(模板标签)的相关文章

分享常见的几种页面静态化的方法_php基础

什么是PHP静态化 PHP静态化的简单理解就是使网站生成页面以静态HTML的形式展现在访客面前,PHP静态化分纯静态化和伪静态化,两者的区别在于PHP生成静态页面的处理机制不同. 为什么要让网页静态化 一.加快页面打开浏览速度,静态页面无需连接数据库打开速度较动态页面有明显提高: 二.有利于搜索引擎优化SEO,Baidu.Google都会优先收录静态页面,不仅被收录的快还收录的全: 三.减轻服务器负担,浏览网页无需调用系统数据库: 四.网站更安全,HTML页面不会受php相关漏洞的影响: 观看一

PHP实现页面静态化的超简单方法_php实例

为什么要页面静态化? 1.动态文件执行过程:语法分析-编译-运行 2.静态文件,不需要编译,减少了服务器脚本运行的时间,降低了服务器的响应时间,直接运行,响应速度快:如果页面中一些内容不经常改动,动态页面静态化是非常有效的加速方法.(纯静态,伪静态还是需要PHP解释器的) 3.生成静态URL利于SEO,利于蜘蛛抓取和收录,有利于提升排名 优化页面响应时间方法 1.动态页面静态化 2.优化数据库 3.负载均衡 4.使用缓存等等 //动态页面静态化一般用于不经常改动的地方,频繁改动的地方一般不适用静

PHP实现页面静态化的超简单方法

为什么要页面静态化? 1.动态文件执行过程:语法分析-编译-运行 2.静态文件,不需要编译,减少了服务器脚本运行的时间,降低了服务器的响应时间,直接运行,响应速度快:如果页面中一些内容不经常改动,动态页面静态化是非常有效的加速方法.(纯静态,伪静态还是需要PHP解释器的) 3.生成静态URL利于SEO,利于蜘蛛抓取和收录,有利于提升排名 优化页面响应时间方法 1.动态页面静态化 2.优化数据库 3.负载均衡 4.使用缓存等等 //动态页面静态化一般用于不经常改动的地方,频繁改动的地方一般不适用静

PHP实现HTML页面静态化的方法_php技巧

随着网站的内容的增多和用户访问量的增多,无可避免的是网站加载会越来越慢,受限于带宽和服务器同一时间的请求次数的限制,我们往往需要在此时对我们的网站进行代码优化和服务器配置的优化.一般情况下会从以下方面来做优化 动态页面静态化 优化数据库 使用负载均衡 使用缓存 使用CDN加速 现在很多网站在建设的时候都要进行静态化的处理,为什么网站要进行静态化处理呢?我们都知道纯静态网站是所有的网页都是独立的一个html页面,当我们访问的时候不需要经过数据的处理直接就能读取到文件,访问速度就可想而知了,而其对于

ASP.NET防止页面刷新的两种解决方法

 本篇文章主要是对ASP.NET防止页面刷新的两种解决方法进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助 方法有二,总结如下:    第一方法:  直接在CS代码里敲:  Response.Buffer = true;  Response.ExpiresAbsolute = DateTime.Now.AddSeconds(-1);  Response.Expires = 0;  Response.CacheControl = "no-cache";    当有人想按

Smarty实现页面静态化(生成HTML)的方法_php实例

本文实例讲述了Smarty实现页面静态化(生成HTML)的方法.分享给大家供大家参考,具体如下: 为了减少数据库读取次数,某些内容不经常被更改的页面,比如文章详细页面需要做成HTML静态页面. 在使用Smarty的情况下,也可以实现页面静态化.下面先简单说一下使用Smarty时通常动态读取的做法. 一般分这几步: 1.通过URL传递一个参数(ID): 2.然后根据此ID查询数据库: 3.取得数据后根据需要修改显示内容: 4.assign需要显示的数据: 5.display模板文件. Smarty

Smarty实现页面静态化(生成HTML)的方法

本文实例讲述了Smarty实现页面静态化(生成HTML)的方法.分享给大家供大家参考,具体如下: 为了减少数据库读取次数,某些内容不经常被更改的页面,比如文章详细页面需要做成HTML静态页面. 在使用Smarty的情况下,也可以实现页面静态化.下面先简单说一下使用Smarty时通常动态读取的做法. 一般分这几步: 1.通过URL传递一个参数(ID): 2.然后根据此ID查询数据库: 3.取得数据后根据需要修改显示内容: 4.assign需要显示的数据: 5.display模板文件. Smarty

一个页面上连接两种不同数据库 是否可行

一个页面上连接两种不同数据库,进行操作...不知道,是否可行? 有这可能吗? 当然可以 mssql ConnStr = "driver={SQL Server};server=192.168.1.110;database=news;uid=sa;pwd=123456" Set conn = Server.CreateObject("ADODB.Connection") conn.Open ConnStr mysql set myconn = server.creat

PHP网站页面静态化的生成方法介绍

在PHP网站开发中为了网站推广和SEO等需要,需要对网站进行全站或局部静态化处理,PHP生成静态HTML页面有多种方法,比如利用PHP模板.缓存等实现页面静态化,今天就以PHP实例教程形式讨论PHP生成静态页面的方法. 什么是PHP静态化 PHP静态化的简单理解就是使网站生成页面以静态HTML的形式展现在访客面前,PHP静态化分纯静态化和伪静态化,两者的区别在于PHP生成静态页面的处理机制不同. PHP伪静态教程:利用Apache mod_rewrite实现URL重写的方法 PHP生成静态HTM