一、什么是动态语言静态化
将现有的PHP等动态语言的逻辑代码生成为静态HTML文件,用户访问动态脚本重定向到静态的HTML文件的过程。
对实时性不高的页面
二、为什么要静态化
- 动态脚本通常会做逻辑计算和数据查询,访问量越大,服务器压力越大
- 访问量大时可能造成CUP负载过高,数据库服务器压过大
- 静态化可以减低逻辑处理压力,降低数据库服务器查询压力
三、静态化的实现方式
使用模板引擎smarty
利用ob系列函数
ob_start() 打开输出控制缓存
ob_get_contents() 返回输出缓冲区内容
ob_clean() 清空输出缓冲区
ob_end_flush() 冲刷出(送出)输出缓冲区内容并关闭缓冲
ob_start()
输出到页面的HTML代码
ob_get_contents()
ob_end_flush()
fopen()写入
可以判断文件的inode修改时间,判断是否过期,使用filectime函数
<?PHP
$id = $_GET['id'] ?? '';
$cache_name = md5(__FILE__) . '-' . $id . '.html';
$cache_lifetime = 3600;
if (filectime(__FILE__) <= filectime($cache_name)
&& file_exists($cache_name)
&& filectime($cache_name) + $cache_lifetime > time())
{
include $cache_name;
exit;
}
ob_start();
?>
<b>THIS IS MY SCRIPT123 id=<?=$id?></b>
<?php
$content = ob_get_contents();
ob_end_flush();
$handle = fopen($cache_name, 'w');
fwrite($handle, $content);
fclose($handle);
网友评论