PHP重点知识复习 – 高并发之动态语言静态化

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

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

对实时性要求不高的页面

2.为什么要静态化

原因:

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

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

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

3.静态化的实现方式

(1)使用模板引擎

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

$smarty->cache_dir = $ROOT."/cache";  //缓存目录

$smarty->caching = true;  //是否开启缓存

$smarty->cache_lifetime = "3600";  //缓存时间

$smarty->display(string template[, string cache_id[, string compile_id]]);

$smarty->clear_all_cache();  //清除所有缓存

$smarty->clear_cache('file.html');  //清除指定的缓存

$smarty->clear_chache('article.html', $art_id);  //清除同一个模板下的指定缓存号的缓存

(2)利用ob系列的函数

理解ob系列函数的操作方法,会更容易理解Smarty缓存的原理。

ob_start():打开输出控制缓冲

ob_get_contents():返回输出缓冲区内容

ob_clean():清空输出缓冲区

ob_end_flush():冲刷出(送出)输出缓冲区内容并关闭缓冲

可以判断文件的inode修改时间,判断是否过期

使用 filemtime 函数

以下是一个ob函数的栗子:

<?php

$id = $_GET['id'];

if (empty($id)){
	$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() ){
	include $cache_name;
	exit;
}

ob_start();

?>

<p>aaaThis is Script id = <?php echo $id; ?></p>

<?php

$content = ob_get_contents();

ob_end_flush();

$handle = fopen($cache_name, 'w');

fwrite($handle, $content);

fclose($handle);

?>

 

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇