偽靜態 

真靜態只是完全生成了HTML 
當然在你網站的流量沒有那麼大的時候。URL重寫是最好的方法(如果訪問量很大,還可以考慮負載均衡) 

URL
重寫的方法有很多種,APACHE(rewrite)IISREWRITEPHP指令碼直接處理。我們先講解如何使用PHP指令碼直接處理。檢視php資訊,會看到pathinfo資訊,這樣做php重寫。

<?php

//案例

$str=”abck1234dddd9000″;

//找到4個連續的數

preg_match(`/(dd)(dd)/si`,$str,$arr);//i不區分大小寫echo

echo “<pre>”;

print_r($arr);

echo “</pre>”;

?>


 

配置apacherewrite來處理

請求

http://www.hsp.com/news-id3.html

相當於

http://www.hsp.com/news.php?id=3

1/載入該模組:

修改httpd.conf

LoadModule rewrite_module modules/mod_rewrite.so

2/配置虛擬主機

C:WindowsSystem32Driversetc

 c hosts檔案新增你的 ip  域名對應

192.168.211.1  saisai.com

192.168.211.1  www.saisai.com

 http.conf 檔案中啟用虛擬主機

# Virtual hosts 啟用虛擬主機

Include conf/extra/httpd-vhosts.conf

3/配置 httpd_vhosts.conf檔案

 <Direcotry >段的配置,預設值,是在httpd.conf 的中配置,看根目錄.

<VirtualHost *:80>

    #ServerAdmin webmaster@dummy-host2.somenet.com

    #文件的根目錄

    DocumentRoot “D:AppServwwwsaisai”

    #域名

    ServerName saisai.com

    ErrorLog “logs/dummy-host2.somenet.com-error.log”

    #CustomLog “logs/dummy-host2.somenet.com-access.log” common

    #配置rewrite相關選項,

    <Directory “D:AppServwwwsaisai”>

    #拒絕所有的訪問

    #Deny from all

    Allow from all

    #是否顯示列表(在釋出專案後一般是不啟用,對於這個配置,針對DocumentRoothtdos外的目錄生效)

    Options +indexes

    #是否啟用rewrite

    Allowoverride  all

    </Directory>

</VirtualHost>

4.在目錄下新增了一個 .htaccess  檔案,這個檔案時配置rewrite機制和規則

windows下無法直接建立.htaccess檔案,這時可以使用其他軟體重新命名即可。

<IfModule rewrite_module>

#寫你的rewrite規則

RewriteEngine On

#news-id(d+).html$ 是規則  news.php?id=$1 是轉發的頁面

#正則 子表示式 捕獲 反向引用

#  “news-id33.html”

可以配置多個規則,匹配的順序是從上到下

RewriteRule  news-id(d+).html$   news.php?id=$1

RewriteRule  abc-id(d+).html$     error.php

</IfModule>

 

5/這個rewrite的規則也直接在 < Direcotry > 段直接配置

<Directory “D:AppServwwwsaisai”>

    #拒絕所有的訪問

    #Deny from all

    Allow from all

    #是否顯示列表(在釋出專案後一般是不啟用,對於這個配置,針對DocumentRoothtdos外的目錄生效)

    #Options +indexes

    #是否啟用rewrite

    Allowoverride  all

    #我們有時候,也可以把rewrite機制和規則寫這裡

    #RewriteEngine On

    #RewriteRule  news-id(d+).html$   news.php?id=$1

</Directory>

6/建立多個目錄,<Directory “D:AppServwwwsaisaiwp-admin”>

    #拒絕所有的訪問 ,保護目錄

    Deny from all

</Directory> 

 

url重寫的缺點:我看只有一個,那就是效率不如生成html的,因為它不是真正意義上的靜態頁,每次請求是要讀取資料庫的。但你可以用快取技術來補償一下。

偽靜態是站在seo角度看.,他對於的頁面不是存在的,而是每次查詢資料庫得到的資訊,

真靜態的頁面是真的存在.

如何更好的使用 偽靜態+ob

定期清理靜態檔案

windows 

  編寫一個 clear.php 檔案,可以去檢測某個目錄下的檔案是否過期

  在編寫my.bat檔案,做個計劃任務,即可定期清理檔案

“del d:/appserver/www/news-id100.html”

  或者製作一個clear.php定義一個unlin刪除函式,ab測試一下

“C:\myenv\apache\bin\ab.exe” -n 1 -c 1 http://www.hsp.com/clear.php

clear.php

<?php   unlink(“d:/appserver/www/news-id100.html”); ?>

  windows使用任務計劃.


linux使用crontab

vi qingli.sh

#!/bin/bash

#qingli.sh

rm -rf /usr/local/apache/htdoc/news-id100.html

然後crontab -e建立計劃任務即可。

偽靜態和真靜態的特點和區別

①真靜態訪問效率高,利於seo.可以減少對資料庫的操作。但是會佔用大量的磁碟.

②偽靜態一、可以方便的實現對搜尋引擎的優化,二、佔空間比較小。三、通過生成不同view-id2.hmtl 可以實現內容的變化.四有效的防止了注入攻擊

真靜態和偽靜態的選擇          

什麼情況下不適合使用靜態化技術.

網站實時性要求高,不要使用靜態化(真靜態,偽靜態均不適宜).

如果網站訪問量較小,沒有必要使用靜態化技術

如果資料專案不多,但是訪問頻率極大,建議使用真靜態,比如新浪新聞頻道

如果資料專案海量,使用真靜態會生成海量的html靜態頁面,建議

使用偽靜態

在一個大型網站中,靜態化技術是綜合使用的,這個需要大家經驗

的積累,多做專案

對於一些特殊的CMS都會有相應的偽靜態方案,如wordpress使用wp-super cache外掛,這些需要在實際的應用中學習。

當然還有開啟gzip的方法也可提高網站的訪問速度,如在.htaccess檔案加入下面程式碼,然後在gzip.zzbaike.com測試結果

 

<Ifmodule mod_deflate.c> 

AddOutputFilter DEFLATE html xml php js css 

</Ifmodule>

 

 

個人推薦使用偽靜態配合快取技術來為提供大型網站提速