偽靜態
真靜態只是完全生成了HTML。
當然在你網站的流量沒有那麼大的時候。URL重寫是最好的方法(如果訪問量很大,還可以考慮負載均衡)
URL重寫的方法有很多種,APACHE(rewrite),IISREWRITE。PHP指令碼直接處理。我們先講解如何使用PHP指令碼直接處理。檢視php資訊,會看到pathinfo資訊,這樣做php重寫。
<?php
//案例
$str=”abck1234dddd9000″;
//找到4個連續的數
preg_match(`/(dd)(dd)/si`,$str,$arr);//i不區分大小寫echo
echo “<pre>”;
print_r($arr);
echo “</pre>”;
?>
配置apache的rewrite來處理
請求
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
#是否顯示列表(在釋出專案後一般是不啟用,對於這個配置,針對DocumentRoot在htdos外的目錄生效)
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
#是否顯示列表(在釋出專案後一般是不啟用,對於這個配置,針對DocumentRoot在htdos外的目錄生效)
#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>
注: 個人推薦使用偽靜態配合快取技術來為提供大型網站提速