僞靜態 php
真靜態只是徹底生成了HTML。
固然在你網站的流量沒有那麼大的時候。URL重寫是最好的方法(若是訪問量很大,還能夠考慮負載均衡)
URL重寫的方法有不少種,APACHE(rewrite),IISREWRITE。PHP腳本直接處理。咱們先講解如何使用PHP腳本直接處理。查看php信息,會看到pathinfo信息,這樣作php重寫。css
<?php
//案例
$str="abck1234dddd9000";
//找到4個連續的數
preg_match('/(\d\d)(\d\d)/si',$str,$arr);//i不區分大小寫echo
echo "<pre>";
print_r($arr);
echo "</pre>";
?>
請求
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:\Windows\System32\Drivers\etc
到 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:\AppServ\www\saisai"
#域名
ServerName saisai.com
ErrorLog "logs/dummy-host2.somenet.com-error.log"
#CustomLog "logs/dummy-host2.somenet.com-access.log" common
#配置rewrite相關選項,
<Directory "D:\AppServ\www\saisai">
#拒絕全部的訪問
#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:\AppServ\www\saisai">
#拒絕全部的訪問
#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:\AppServ\www\saisai\wp-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.能夠減小對數據庫的操做。可是會佔用大量的磁盤.
②僞靜態1、能夠方便的實現對搜索引擎的優化,2、佔空間比較小。3、經過生成不一樣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>
注: 我的推薦使用僞靜態配合緩存技術來爲提供大型網站提速