动态语言静态化

1、什么是动态语言静态化

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

只有实时性要求不高的页面才可以做静态化

2、为什么要静态化

动态脚本通常会做逻辑运算和数据查询,访问量越大,服务器压力越大

访问量大时可能会造成CPU负载过高,数据库服务器压力过大

静态化可以减低逻辑处理压力,降低数据库服务器查询压力

3、静态化实现方式

3.1、使用模板引擎

可以用Smarty的缓存机制生成静态HTML缓存文件

$smarty->cache_dir = $ROOT."/cache";//缓存目录
$smarty->caching = true;//开启缓存
$smarty->cache_lifetime = "3600";//缓存时间
//加载模板,数据替换
//@param template 模板
//@param cache_id 缓存id(开启了缓存则会生成不同的缓存文件 )
//@param compile_id 
$smarty->display(string template [, string cache_id [, string compile_id]]);

//清空缓存
$smarty->clear_all_cache();//清除所有缓存
$smarty->clear_cache('file.html');//清除指定缓存文件
$smarty->clear_cache("article.html", $art_id);//清除同一模板下的指定缓存号的缓存

3.2、利用ob系列函数

ob_start();//打开输出控制缓冲
ob_get_contents();//返回输出缓冲区内容
ob_clean();//清空输出缓冲区
ob_end_flush();//冲刷出(送出)输出缓冲区内容并关闭缓冲

简单例子

$id = empty($_GET['id']) ? '' : $_GET['id']
$cache_file = md5(__FILE__) . '-' . $id . '.html';
$cache_lifetime = 3600;

//缓存文件存在,文件未过期,php文件修改时间小于缓存文件修改时间(php逻辑维修改)
if( file_exists($cache_file) 
&& (filectime($cache_file) + $cache_lifetime) > time()
&& filectime(__FILE__) <= filectime($cache_file)){
	return include($cache_file);
}
ob_start();
....;//输出到页面的html代码
$contents = ob_get_contents();
ob_end_flush();
file_put_contents($cache_file, $contents);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值