程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php頁面靜態化之真靜態

php頁面靜態化之真靜態

編輯:關於PHP編程

之前的緩存和現在所說的頁面靜態化都是為網站提速的,如果是訪問量小的小型網站可能不需要但是如果網站規模或訪問量很大,那麼頁面靜態化和緩存就會體現出各自的價值了下面先來了解下頁面靜態化的分類

 

頁面靜態化的分類:

1,按照形式:

1)真靜態

2)偽靜態

2,按照范圍:

1)局部靜態話(jquery,ajax)

2)全部靜態化

頁面靜態化可以為網站提速還能進行seo優化,因為搜索引擎偏向抓取靜態頁面,針對不同的搜索引擎seo的標准可能不同。下面提供一個百度搜索引擎優化的鏈接

 

這次給大家分享的是頁面真靜態技術,本次將以一個簡單的新聞管理系統為例子介紹真靜態技術的使用,項目使用mvc架構來弄

一.真靜態的理解

真靜態就是把我們先前訪問的jsp,php,aspx變為html,保留先前的頁面效果和業務邏輯,減輕服務器的壓力、讓網站被良好的收錄。但是真靜態也有缺點那就是過多的靜態頁面占用了服務器空間,維護不是很方便。

二 開始靜態化新聞管理系統

1.通過列表頁面以最快速度查看單條數據的詳細信息(如通過新聞列表查看某一條新聞的詳細內容)

如果沒有靜態化的前提下,我們的做法可能是通過點擊列表頁面的標題傳一個ID過去,之後查詢出單條數據之後顯示在一個頁面上,這樣我們每次點擊鏈接都會去訪問一次數據庫,這樣服務器的壓力必然變大,可取的做法是每次添加數據都生成對應的詳細頁面

(1)簡單的後台管理頁面

 

(2)添加新聞的操作

 

 

if(add==$opper){
    $news=new NewsManagerImpl();
    $title=$_POST[title];
    $content=$_POST[content];
    $result=$news->addNews($title, $content);
    if($result>0){
    	//生成靜態html(用於查詢單條數據)
    	$fp=fopen(../static/news-id-.$result..html, w);
    	$ftpl=fopen(../tpl/newsDetail.tpl, r);
    	
    	while(!feof($ftpl)){
    		$row=fgets($ftpl);
    		//替換相應的位置
    		$row=str_replace({title},  $title, $row);
    		$row=str_replace({content},  $content, $row);
    		fwrite($fp, $row);
    		
    	}
    	fclose($ftpl);
    	fclose($fp);
    	header(Location:../manage/success.html);
    }
	
	exit();
}

下面來看看newsDetail.tpl這個模板文件

 

 







新聞標題 新聞內容 {title} {content}
2.靜態化列表頁

 

這一部分的工作其實很簡單,就看你能不能想的上去,像修改、刪除我們可以按照原來的做法,該怎麼弄就怎麼弄,只需要定期更新靜態化後的列表頁就可以了,更新的頻率按照自身需要即可。

下面是我的做法:

 

if(updatecache==$opper){
	$rowInfo=;
	$listInfo=;
	$news=new NewsManagerImpl();
	
	$all=$news->getAllNews();
	for ($i = 0; $i < count($all); $i++) {
		$row=$all[$i];
		//拼接列表信息
		$listInfo.=;
		$listInfo.={$row['id']};
		$listInfo.={$row['title']};
		$listInfo.=查看;
		//$listInfo.=刪除;
		//$listInfo.=修改;
		$listInfo.= ;
	}
	//列表頁靜態化
	$listTpl=fopen(../tpl/newsList.tpl, r);
	while(!feof($listTpl)){
		$rowInfo.=fgets($listTpl);
	
	}
	$all=str_replace({newsContent}, $listInfo , $rowInfo);
	$staticListFp=fopen(../static/newsList.html, w);
	fwrite($staticListFp, $all);
	fclose($listTpl);
	fclose($staticListFp);
	header(Location:../manage/success.html);
}

是不是就只是一個重新讀一下數據的簡單操作呢,最後給大家拉幾個效果圖省的說我在這瞎寫

 

height=181

 

 

height=151

 

後台的話一般不用考慮靜態化,因為後台是給自己看的,只要性能不是很差靜態化意義不大。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved