溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

使用php怎么對(duì)HTML函數(shù)進(jìn)行壓縮

發(fā)布時(shí)間:2020-12-25 14:27:24 來源:億速云 閱讀:179 作者:Leah 欄目:開發(fā)技術(shù)

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)使用php怎么對(duì)HTML函數(shù)進(jìn)行壓縮,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

壓縮HTML的起因
如何提高網(wǎng)頁加載速度 ,需要怎么對(duì)html頁面優(yōu)化相信是每個(gè)擬提高建站技術(shù)站長曾想到的問題,其實(shí)網(wǎng)頁優(yōu)化的方法還是很多。

有童鞋詢問higrid如何 壓縮HTML,也就是說能不能 把所有的html、js、Css在運(yùn)行前都?jí)嚎s成一行,清除注釋標(biāo)記、換行符、空格、制表符等。這樣一個(gè)直接的好處是 減小html頁面體積來提高前端加載速度。很多人認(rèn)為啟動(dòng)gzip,但一般啟動(dòng)gzip都比較少對(duì)html啟動(dòng)gzip壓縮,因?yàn)楝F(xiàn)在的html都是動(dòng)態(tài)的,不會(huì)使用瀏覽器緩存,而啟用gzip的話每次請求都需要壓縮,會(huì)比較消耗服務(wù)器資源,對(duì)js,css啟動(dòng)gzip比較好是因?yàn)閖s,css都會(huì)使用緩存。而大家也用了很多軟件過濾一下壓縮,也有 在線js/css/html壓縮工具,higrid覺得也很麻煩,可讀性很差。higrid認(rèn)為如果將壓縮功能做成一個(gè)函數(shù)的話,這樣開發(fā)者看到的是未壓縮的狀態(tài),但訪客訪問時(shí),服務(wù)端的程序?qū)?html頁面進(jìn)行壓縮,清除注釋標(biāo)記、換行符、空格、制表符等 來達(dá)到 減小了html體積的目的。 如果您經(jīng)常訪問higrid.net, 右鍵查看一下 html源代碼 ,會(huì)看到本篇 html源代碼經(jīng)過了壓縮處理。包括higrid.net 提供的免費(fèi)內(nèi)容管理系統(tǒng) ,輸出的都是壓縮html,去掉了空白、換行符、制表符。但higrid.net 上面也有一些例外,就是higrid.net 主要推薦 在線表格 、在線圖形 ,包括 jquery這些演示 ,為了方便訪客,就沒有啟動(dòng)壓縮。

因此,higrid個(gè)人覺得 壓縮html 的最大好處就是一本萬利,只要寫好了一次函數(shù),以后在需要運(yùn)用的時(shí)候調(diào)用一下就可以了,所有程序都可以使用,不會(huì)增加任何額外的開發(fā)工作。今天higrid就給大家分享幾個(gè)個(gè)人覺得好用的函數(shù),請大家不妨試試看,相信大家會(huì)喜歡。

采用php來壓縮HTML
由于higrid對(duì) php 比較感興趣,所以使用 php來壓縮HTML,當(dāng)然使用其他語言也差不多,例如使用 asp來壓縮HTML,道理應(yīng)該一樣的。

higrid將 壓縮html的功能用php寫成一個(gè)函數(shù) ,其實(shí)網(wǎng)上這樣的 php壓縮函數(shù) 也很多,不信你可以百度或者谷歌,但多數(shù)不是很好用,特別在 壓縮js 或 壓縮CSS 的時(shí)候,主要原因是一些 壓縮注釋 等方面不同導(dǎo)致出現(xiàn)問題。 先看這個(gè)函數(shù):

復(fù)制代碼 代碼如下:


/**
* 壓縮html : 清除換行符,清除制表符,去掉注釋標(biāo)記
* @param $string
* @return壓縮后的$string
* */
function compress_html($string){
$string=str_replace("\r\n",'',$string);//清除換行符
$string=str_replace("\n",'',$string);//清除換行符
$string=str_replace("\t",'',$string);//清除制表符
$pattern=array(
"/> *([^ ]*) *</",//去掉注釋標(biāo)記
"/[\s]+/",
"/<!--[^!]*-->/",
"/\" /",
"/ \"/",
"'/\*[^*]*\*/'"
);
$replace=array (
">\\1<",
" ",
"",
"\"",
"\"",
""
);
return preg_replace($pattern, $replace, $string);
}


php來壓縮HTML注意事項(xiàng)
php來壓縮HTM 實(shí)現(xiàn)的方式主要是用正則表達(dá)式去查找,替換。在html壓縮的時(shí)候,主要要注意下面幾點(diǎn):

1.HTML 文檔中,多個(gè)空白字符等價(jià)為一個(gè)空白字符。也就是說換行等空白字符的刪除是不安全的,有可能導(dǎo)致部分元素的樣式產(chǎn)生差異。
2.html中有一個(gè)pre, 表示 preformatted text. 里面的任何空白,都不能被刪除,因此pre,textarea 標(biāo)簽里面的內(nèi)容格式需要保留,不能壓縮。
3.HTML 中有可能有 IE 條件注釋。這些條件注釋是文檔邏輯的一部分,不能被刪除。因此去掉html注釋的時(shí)候,有些注釋是不能去掉的,比如:
4.壓縮嵌入式j(luò)s中的注釋要注意,因?yàn)榭赡茏⑨尫?hào)會(huì)出現(xiàn)在字符串中,比如: var url = "http://www.higrid.net"; // 前面的//不是注釋
5.對(duì)于動(dòng)態(tài)頁面來說,HTML 的壓縮有可能還會(huì)增加服務(wù)器的 CPU 負(fù)擔(dān),得不償失

higrid使用的php壓縮html函數(shù)代碼
由于注釋對(duì)代碼有作用,higrid使用的php壓縮html函數(shù)代碼 沒有去掉注釋,直接上代碼。

復(fù)制代碼 代碼如下:


function higrid_compress_html($higrid_uncompress_html_source )
{
$chunks = preg_split( '/(<pre.*?\/pre>)/ms', $higrid_uncompress_html_source, -1, PREG_SPLIT_DELIM_CAPTURE );
$higrid_uncompress_html_source = '';//[higrid.net]修改壓縮html : 清除換行符,清除制表符,去掉注釋標(biāo)記
foreach ( $chunks as $c )
{
if ( strpos( $c, '<pre' ) !== 0 )
{
//[higrid.net] remove new lines & tabs
$c = preg_replace( '/[\\n\\r\\t]+/', ' ', $c );
// [higrid.net] remove extra whitespace
$c = preg_replace( '/\\s{2,}/', ' ', $c );
// [higrid.net] remove inter-tag whitespace
$c = preg_replace( '/>\\s</', '><', $c );
// [higrid.net] remove CSS & JS comments
$c = preg_replace( '/\\/\\*.*?\\*\\//i', '', $c );
}
$higrid_uncompress_html_source .= $c;
}
return $higrid_uncompress_html_source;
}


php壓縮html函數(shù)代碼總結(jié)
有些童鞋不 推薦壓縮html , 主要原因除了上面所說的 php來壓縮HTML注意事項(xiàng) 外,通過 gzip 壓縮已經(jīng)能達(dá)到很好的效果。另外,因?yàn)楫a(chǎn)生影響HTML的角色太多(靜態(tài),動(dòng)態(tài),前端動(dòng)態(tài)),也沒什么量化指標(biāo),所以很難控制壓縮成什么樣(代碼寫成什么程度)。代碼更需要考慮執(zhí)行效率,而不是傳輸效率。對(duì)于動(dòng)態(tài)頁面來說,HTML 的壓縮有可能還會(huì)增加服務(wù)器的 CPU 負(fù)擔(dān),得不償失。Google的壓縮網(wǎng)頁 是因?yàn)樵缙谒M醉撐谋颈M可能控制在一個(gè)或兩個(gè)包內(nèi),而且他的首頁太重要了,流量也很離譜。壓縮一個(gè)字節(jié),總流量一算都是個(gè)不小的數(shù)字,自然也就是必要之舉了。進(jìn)一步的壓縮存在問題,除非能像 Google 一樣充分測試(Google 也僅壓縮了少部分核心服務(wù)的頁面),否則不推薦對(duì) HTML 進(jìn)行壓縮處理。

上述就是小編為大家分享的使用php怎么對(duì)HTML函數(shù)進(jìn)行壓縮了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI