50. PHP 页面静态化(3)

本文介绍通过缓存时间、手动触发及定时任务三种方式实现动态页面向纯静态页面的转化,提高网站加载速度和用户体验。

如何触发系统生成纯静态页面 — 全部纯静态
这里写图片描述

比如,如何触发index.php 生成纯静态页面?

1. 页面添加缓存时间

这里写图片描述

如,让用户访问index.php页面,先判断服务器是否有index.shtml文件,
并且让 index.shtml 生成的时间与当前时间做个对比,
如当前时间减去文件最后的修改时间。这个时间根据业务需求来定。
如果过期,则让动态页面生成新的静态页面;否则,则用已经生成的静态页面。
<?php

// 1.链接数据库,然后从数据库里面获取数据
// 2.把获取到的数据填充到模板文件里面
// 3.需要把动态的页面转化为静态页面,生成纯静态化文件



if(is_file('./index.shtml') && (time()-filemtime('./index.shtml'))<300){
    // 如果文件存在,且当前时间 - 文件最后修改时间<300s,则没有失效,直接加载静态文件即可
    require_once('./index.shtml');
}else{


//引入数据库操作文件
require_once('./db.php');

$connect = Db::getInstance()->connect();
$sql = "select * from news where `category_id`=1 and `status`=1 order by desc limit 5";
$result = mysql_query($sql,$connect);
$news = array();
while($row = mysql_fetch_array($result))
{
    $news[] = $rwo;
}

ob_start();
//引入模板
require_once('./templates/singwa.php');

//第一个参数是我们想要生成的静态文件index.shtml,第二个传我们缓冲区的内容
/*if(file_put_contents('index.shtml',ob_get_clean())){
    echo 'Success';
}else{
    echo 'Error';
}*/
    //不用ob_get_clean(),因为它把缓冲区的内容情况了.ob_get_contents()把信息再终端生成,
    并且在服务器缓存
    file_put_contents('index.shtml',ob_get_contents());
}

这里写图片描述


2. 手动触发方式

这里写图片描述

即设置一个触发方式,触发后,不用判断,直接从数据库取数据,然后填充到模板,最后生成静态文件。

3. crontab 定时扫描程序

这里写图片描述

// 编辑 crontab 
crontab -e  

这里写图片描述

*/1 * * * * php /data/static/index.php 

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值