之前的緩存和現在所說的頁面靜態化都是為網站提速的,如果是訪問量小的小型網站可能不需要但是如果網站規模或訪問量很大,那麼頁面靜態化和緩存就會體現出各自的價值了下面先來了解下頁面靜態化的分類
頁面靜態化的分類:
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(); }
這一部分的工作其實很簡單,就看你能不能想的上去,像修改、刪除我們可以按照原來的做法,該怎麼弄就怎麼弄,只需要定期更新靜態化後的列表頁就可以了,更新的頻率按照自身需要即可。
下面是我的做法:
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); }
後台的話一般不用考慮靜態化,因為後台是給自己看的,只要性能不是很差靜態化意義不大。