PHP文件緩存技術之頁面靜態化

很多大型網站,進去的時候看它很複雜的頁面,但是加載也沒有耗費多長時間,除了其它必要原因以外,我認爲靜態化也是其中必需考慮的技術之一。她先於用戶獲取資源或數據庫數據進而通過靜態化處理,生成靜態頁面,所有人都訪問這一個靜態頁面,而靜態化處理的頁面本身的訪問速度要較動態頁面快很多倍,因此程序性能會有大大的提升。


靜態化在頁面上的體現爲:訪問速度加快,用戶體驗性明顯提升;在後臺體現爲:訪問脫離數據庫,減輕了數據庫訪問壓力。


PHP實現頁面靜態化的原理:如果靜態文件不存在或者當前時間減去文件的最後修改時間大於緩存時間,數據從數據庫中讀取,然後在將數據生成靜態文件,否則直接讀取靜態文件中的內容。


詳細代碼如下:


<?php

$cacheTime = 600;
$cacheDir = './html';
if (is_dir($cacheDir)) mkdir($cacheDir);
$cacheFile = $cacheDir.'/'.(int)$_GET['id'].'.html';
if (!is_file($cacheFile) || time() - filemtime($cacheFile) > $cacheTime) {
	$conn = mysql_connect('localhost', 'root', 'root');
	mysql_select_db('yunps', $conn);
	mysql_query('SET NAMES gb2312');
	$sql = 'SELECT * FROM yu_article WHERE id = '.(int)$_GET['id'];
	$resourse = mysql_query($sql);
	$result = mysql_fetch_assoc($resourse);
	//這裏只是簡要生成輸出,複雜點的可以將 ob 函數和 include 結合使用 
	$content = '<html><head><title>'.$result['title'].'</title></head><body>'.$result['content'].'</body></html>';
	file_put_contents($cacheFile, $content, LOCK_EX);
} else {
	$content = file_get_contents($cacheFile);
}

echo $content;

?>


注意:如果想實時輸出點擊數之類可以參考http://www.yuphp.com/Article/index/id/36.html,如果想將連接地址也替換成靜態的話就需要用到僞靜態以及正則替換 URL 地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章