回顧: php
靜態化的分類: html
真靜態: linux
僞靜態: apache
實現真靜態的方式: 編程
(1)使用ob緩存 windows
ob_start();ob緩存的數據是:響應的主體數據, 緩存
程序緩存:緩存的數據,http返回的數據(頭和主體) 服務器
(2)使用模板替換技術, 併發
一、實現方式: ide
(1)在添加新聞內容的時候,生成對應的新聞詳情的靜態頁面。
(2)在修改新聞內容的時候,要從新生成新聞詳情的靜態頁面。
(3)在訪問新聞詳情頁面的時候,直接訪問生成的靜態頁面
二、基本原理
三、開始實現:
(1)新建一個新聞表:
create table news(
id int unsigned primary key auto_increment,
title varchar(32) not null comment '新聞的標題',
content text comment '新聞的內容',
filename varchar(64) not null default '' comment '存儲生成的對應的新聞詳情頁面的路徑'
)engine myisam charset utf8;
(2)action.php頁面代碼:
添加新聞的。核心代碼:
(3)建立一個新聞列表頁面,
index.php頁面:
核心代碼是新聞詳情的鏈接。
(4)當修改新聞的時候,則從新生成靜態頁面。
剛纔的案例缺點:
真實的項目中,應該是分前臺和後臺的,
讓前臺靜態化,後臺無需生成靜態頁面。
要讓前臺的首頁也生成一個靜態頁面。
一、項目規劃 :
二、action.php頁面完成添加
三、生成前臺的首頁面。
//新建一個後臺的首頁,
從形式上看是一個靜態地址,實際上仍是訪問的動態地址,
好比:訪問:http://www.abc.com/news-sport-id123.html
其實是:http://www.abc.com/news.php?type=sprot&id=123;
主要是利於seo,靜態頁面的方式,比較容易被搜索引擎給蒐集。
一、實現原理:
使用apac he的rewrite機制。
rewrite機制:就是一個url的重寫機制,
好比:請求的url是 abc.html 重寫到abc.php
123.php abc.php
二、如何開啓重寫模塊,
在httpd.conf文件中進行開啓。
三、入門案例:
若是請求abc.html 重寫成請求index.php
咱們使用.htaccess來進行配置。使用該文件要保證虛擬主機裏面的allowoverride all爲all
具體的.htaccess文件中的配置:
效果訪問:
訪問abc.html 實際上返回的是運行index.php的結果。
四、具體的語法:
RewriteEngine on #開啓重寫引擎
RewriteCond 重寫條件,要知足必定的條件才重寫。
RewriteCond條件的語法:
RewriteCond 判斷依據 條件表達式 [條件標誌]
(1)判斷依據:可使用服務器變量:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
好比:%{REQUEST_FILENAME} 表示請求的文件名稱
好比:%{HTTP_REFERER}:表示請求的來源。
(2)條件表達式:能夠是一些標誌,或者字符串
好比:
-d 表示是一個目錄
-f 表示是一個文件
RewriteCond %{REQUEST_FILENAME} !-d //若是請求的路徑不是一個目錄
RewriteCond %{REQUEST_FILENAME} !-f //若是請求的路徑不是一個文件
(3)[條件標誌]
[NC]表示不區分大小寫
[OR],在默認狀況下多個條件(RewriteCond)之間是而且的關係。若是咱們使用或關係則後臺添加[OR]標誌。
案例1:好比咱們請求,123.html,若是123.html文件存在,則請求123.html文件,若是不存在則執行重寫規則。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule 123.html index.php
RewriteRule 語法規則
RewriteRule 規則的url(可使用正則) 目標url [規則標誌]
規則標誌:
[F] 表示:表示禁止重寫
[NC] 表示:不區分大小寫
五、使用重寫機制來完成一個防盜鏈效果:
referer信息表示:請求的來源,使用哪一個文件請求的。
思路:經過請求資源的referere信息獲取當前的域名,好比域名爲www.demo.com,若是referer中沒有該域名,則禁止訪問。
能夠添加一張圖片給一個提示;
六、在ecshop裏面是使用rewrite機制來完成僞靜態。
在沒有使用僞靜態地址是:
http://www.itecshop.com/goods.php?id=5
ec裏面默認的僞靜態地址:
http://www.itecshop.com/goods-9.html
咱們本身要作的就是:
把http://www.itecshop.com/goods-9.html地址重寫成
http://www.itecshop.com/goods.php?id=9便可
RewriteRule goods-(\d+).html goods.php?id=$1
$1是捕捉到第一個子模式,即 (\d+)的內容。
擴展:好比訪問:http://www.abc.com/news-sport-id100.html
重寫成http://www.abc.com/news.php?type=sport&id=100
RewriteRule news-(music|sposrt)-id(\d+).html news.php?type=$1&id=$2
七、規則標誌[QSA]的使用
查詢的字符串追加:
定義的規則
在沒有使用[QSA]以前:
在規則後面添加[QSA]
使用效果:
主要測試網站的代碼的執行速度。
基本使用:
語法:
ab.exe -n 訪問的總的次數 -c 併發量 頁面的url地址。
一、在默認狀況下,apache的最大併發爲150個,所以須要調整
首先搞清楚當前apache是什麼MPM(多路處理模塊), 通俗講就是apache處理多併發的方式,
常見的有三種
(1)perfork(預派生模式)
(2)worker(工做者模式)
(3)winnt模式(windows下默認的模式)
二、開啓MPM(處理併發的方式)
在httpd.conf文件中,開啓
主要是使用httpd-mpm.conf文件進行配置。
三、如何查看當前apache使用哪種MPM
httpd.exe –l
在window是主要使用winntmpm,
在linux下面經常使用,perfork(預派生模式)
在linux下通常是perfor模式
給你們一個合理的建議配置. 對大部分網站,中型網站,配置:
<IfModule mpm_prefork_module>
StartServers 5 #預先啓動
MinSpareServers 5
MaxSpareServers 10 #最大空閒進程
ServerLimit 1500 #用於修改apache編程參數
MaxClients 1000 #最大併發數
MaxRequestsPerChild 0 #一個進程對應的線程數,對worker 更有效果。若是是0則不讓進程死掉。
</IfModule>
若是你的網站pv值 百萬
ServerLimit 2500 #用於修改apache編程參數
MaxClients 2000 #最大併發數