[文章做者:磨延城 轉載請註明原文出處: https://mo2g.com/view/75/ ]php
以前寫過一篇博客《玩轉百度加速樂CDN,免費讓本身的網站飛起來》,其中介紹瞭如何使用免費的CDN服務讓小帶寬的web服務器,支持更多的用戶同時訪問.通常狀況下,服務器都會開啓gzip壓縮功能,就拿個人博客磨途歌首頁來舉例,原始頁面大小爲63KB,通過nginx服務器的gzip壓縮後,只須要下載11.9KB的數據,直接縮減了50多KB的數據量!html
以前寫過一篇博客《玩轉百度加速樂CDN,免費讓本身的網站飛起來》,其中介紹瞭如何使用免費的CDN服務讓小帶寬的web服務器,支持更多的用戶同時訪問。通常狀況下,服務器都會開啓gzip壓縮功能,就拿個人博客磨途歌首頁來舉例,原始頁面大小爲63KB,通過nginx服務器的gzip壓縮後,只須要下載11.9KB的數據,直接縮減了50多KB的數據量!nginx
精簡以前,本來1M的帶寬只能同時支持2個用戶訪問;精簡以後,能同時支持約爲10個用戶訪問。這回一會,我再跟你們分享一個基於mPHP核心框架寫的PHP函數mini_html,實現PHP壓縮html代碼,更進一步減小網站的數據傳輸量。本來63KB大小的首頁,通過mini_html處理以後,頁面縮減爲38KB,再經過nginx的gzip壓縮,瀏覽器只須要下載10.2KB的數據。web
也許會有同窗以爲mini_html處理後,只是減小了1.7KB的數據傳輸量,彷佛沒有必要這麼大費周章。對於這一點,我以爲從多方面來分析:瀏覽器
1)頁面縮減到了38KB,就爲服務器的磁盤容量節省了25KB,差很少少了一半的佔用空間。服務器
2)對於每個月有流量限制的朋友來講,每次訪問都減小1.7KB,14%的流量,每個月積累下來,效果很是可觀。框架
3)搜索引擎方面,有一種建議,頁面大小最好不要超過100KB。若是咱們爲搜索引擎的磁盤資源着想,我相信,搜索引擎也會爲咱們着想。函數
mini_html函數的使用例子以下:測試
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
<?php
include
'mini_html.php'
;
$html
= '
<html>
<head>
<title>mini_html函數使用測試</title>
</head>
<body>
a b c
d e f
<pre>
a b c
d e f
</pre>
</body>
</html>';
echo
mini_html(
$html
);
/*
結果會輸出
<html><head><title>mini_html函數使用測試</title></head><body> a b c d e f <pre>
a b c
d e f
</pre> </body></html>
*/
|
下邊給出mini_html函數的實現代碼,若是使用過程當中有什麼問題,能夠給我留言。網站
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
/*
做者:moyancheng
最後更新時間:2013-05-17
最後更新時間:2013-12-13
功能:清除換行符、製表符、註釋、多餘空格
$html:要精簡的Html代碼
*/
function
mini_html(
$html
) {
$arrData
= preg_split(
'/(<pre.*?\/pre>)/ms'
,
$html
, -1, PREG_SPLIT_DELIM_CAPTURE );
$html
=
''
;
foreach
(
$arrData
as
$str
) {
if
(
strpos
(
$str
,
'<pre'
) !== 0 ) {
$str
= preg_replace(
'#/\*.+?\*/#s'
,
''
,
$str
);
//過濾腳本註釋 /* */
$str
= preg_replace(
'#(?<!:)(?<!\\\\)(?<!\')(?<!")//(?<!\')(?<!").*\n#'
,
''
,
$str
);//過濾腳本註釋 //
$str
= preg_replace(
'#<!--[^\[<>].*[^\]!]-->#sU'
,
''
,
$str
);
//移除html註釋 <!-- -->
$str
= preg_replace(
'#[\n\r\t]+#'
,
' '
,
$str
);
//空格替換回車或tab
$str
= preg_replace(
'#\s{2,}#'
,
' '
,
$str
);
//多個空格合併爲一個空格
$str
= preg_replace(
'#>\s<#'
,
'><'
,
$str
);
//移除標籤間的空白
}
$html
.=
$str
;
}
return
$html
;
}
|