服务端优化 动态语言静态化 php 生成html

1 什么是动态语言静态化

 将现有的php 等动态语言的逻辑代码生成为静态的html文件,用户访问动态脚本重定向到静态html 文件的过程就是动态语言静态化。

2 为什么要进行静态化处理

 请求php 文件的过程:

用户打开浏览器 输入域名--> 找到对应ip地址(dns 服务器进行解析)--> ip返回客户端 -->客户端找到真实服务器--> 真实服务器找到相应端口的web服务 (比如80端口)--> 服务器(nginx 反向代理给 php-fpm ,fpm php 解析器)--> 解析成html 浏览器能看懂的文件--> 返回html;

如果是请求的html文件则不需要解析php文件以及访问数据库,可大大节省数据的查询。

原因:

  1. 动态脚本通常会做逻辑计算和数据查询,访问量越大,服务器压力越大。
  2. 访问量大时可能会造成CPU负载过高,数据库压力过大。
  3. 静态化类降低逻辑处理压力,降低数据库服务器查询压力

ps:但是只有对实时性要求不高的页面进行静态化缓存。

3 静态化实现的方式

1 使用模板引擎

使用smarty 的缓存机制生成静态html缓存文件 

2 利用ob系列的函数

//主要用到一下几个函数
ob_start();// 打开输出控制缓冲
ob_get_contents(); // 返回输出缓冲区内容
ob_clean(); //清空输出缓冲区
ob_end_flush(); // 冲刷出输出缓冲区内容并关闭缓冲区
<?php
// html to php 动态语言静态化

if(!empty($_GET['id'])) {
    $id = $_GET['id'];
}else{
    $id = '';
}
$cache_name = md5(__FILE__).'-'.$id.'.html';
$cache_lifetime = 3600;
// 判断文件是否存在并且未过期
if( file_exists($cache_name) &&
    (filemtime(__FILE__) <= filemtime($cache_name)) &&
    ((filemtime($cache_name) + $cache_lifetime )> time() )){
    echo '这里走html 缓存';
    include $cache_name;
    exit;
}
//打开输出控制缓冲
ob_start();
?>
<b>
    this is php to html <?php echo $id;?>;
</b>
<?php
// 返回输出缓冲区的内容
$content= ob_get_contents();

//冲刷出(送出)输出缓冲区内容并关闭缓冲
ob_end_flush();
$handle = fopen($cache_name,'w');// 打开文件或者 URL
fwrite($handle,$content);//写入文件(可安全用于二进制文件)
fclose($handle);//关闭一个已打开的文件指针

?>

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值