PHP页面静态化

动态页面: 如PHP,加载页面时候会进行 语法分析,编译,运行。
静态文件: 如html,直接加载,不需分析
动态页面静态化实质: 生成静态HTML文件
优点: 减少服务器脚本的计算时间;降低服务器的响应时间(但不适合经常改变的网站,如微博等)
伪静态: 将?id=9这种的URL转换成可记忆的友好地址
buffer: 缓冲区,内存地址空间,用于存储数据区域
PHP输出流程: 内容–>php buffer–>tcp–>终端
php运行的结果先放入缓冲区(buffer),只有当缓冲区满了或者php运行完毕,才将数据输出去。
缓冲区是通过php.ini中的output_buffering变量控制。output_buffering的默认值是off,可以设置大于0的数值来打开buffer。
但是这里需要注意的是:
1)使用ini_set是无法修改buffer的设置。
2)不管php.ini中output_buffering设置,cli模式下的php始终默认是output buffering为关闭的。但是你可以通过ob_start()将buffer打开。
大家都说:ob_start()是将php buffer打开,ob_end_flush()是将php buffer关闭。需要注意的是php.ini中php buffer是关闭的,再次调用ob_end_flush()会报warning。
基本方式: file_put_contents(‘filename’,’contents’)写入文件;php内置缓存机制output_buffering

#index.php
<?php
//连接数据库操作获取数据
require_once("db.php"); //引入数据库文件

$connect = DB::getInstance()->connect();
$sql="SELECT *FROM news WHERE catagory_id=1 AND status=1 ORDER BY id LIMIT 5;";
$result = mysql_query($sql,$connect);
$news=array();
while($row = mysql_fetch_array($result)){

    $news[]=$row;
}
//开启buffer缓存
ob_start();
//引入模板文件
require_once("qq.php"); 
//html代码也是通过缓存输出的,所以可以把它截下来并清空缓存
//将模板文件qq.php写入静态页面index.shtml
 if(file_put_contents('index.shtml',ob_get_clean())){
    echo 'success';
}else{
    echo 'error';
}
#qq.php
<html>
<?php foreach($news as $key=>$val){
    echo $val['title'];
}?>
</html>
#index.shtml
//输出的内容和index.php一样个,只是页面为静态页面,访问速度更快

方法一:进行时间判断,看是否展示新页面或者展示shtlm

#index.php
//写在开头
if(is_file('index.shtml')&&time()-filemtime('index.shtml')<300){
    require_once('index.shtml');
}else{
..............
}

方法二:手动触发,点击后将.php写入静态页面shtml

//后续补充

方法三:通过Linux下的crontab定时任务来操作

//后续补充

/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值