新聞中心
如何使用php壓縮HTML函數(shù)
有站長朋友問無憂主機小編:如何提高網(wǎng)頁加載速度?如何對html頁面優(yōu)化,相信是每個想提高建站技術(shù)的站長曾想的問題,其實網(wǎng)頁優(yōu)化的方法有很多種。下面小編就來給大家分享一下如何用php來壓縮HTML。 采用php來壓縮HTML 由于小編對php比較熟悉,所以使用php來壓縮HTML, 小編壓縮html的功能用php寫成一個函數(shù) ,其實大家百度這樣的php壓縮函數(shù)有很多,但很多都不是很好用,特別是在壓縮js或壓縮CSS 的時候,主要原因就是一些壓縮注釋等方面不同導(dǎo)致的問題。函數(shù)如下: /** * 壓縮html : 清除換行符,清除制表符,去掉注釋標記 * @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( "/> *([^ ]*) *</",//去掉注釋標記 "/[\s]+/", "/<!--[^!]*-->/", "/\" /", "/ \"/", "'/\*[^*]*\*/'" ); $replace=array ( ">\\1<", " ", "", "\"", "\"", "" ); return preg_replace($pattern, $replace, $string); } php來壓縮HTML注意事項 php來壓縮HTML實現(xiàn)的方式主要是用正則表達式去查找和替換。在html壓縮的時候,小編提醒大家主要注意下面幾點: 1.HTML 文檔中,多個空白字符等價為一個空白字符。也就是說換行等空白字符是不能刪除的,有可能造成部分元素的樣式產(chǎn)生差異。 2.html中有一個pre, 表示 preformatted text. 里面的任何空白,都不能刪除,所以pre,textarea 標簽里面的內(nèi)容格式必須保留,不能壓縮。 3.HTML中可能有IE條件注釋。這些條件注釋是文檔邏輯中的的一部分,不能刪除。因此去掉html注釋的時候,有些注釋是不能去掉的。 4.壓縮嵌入式j(luò)s中的注釋要注意,因為注釋符號可能會出現(xiàn)在字符串當中,比如: var url = "http://www.gle-technology.com"; // 前面的//不是注釋 5.對于動態(tài)頁面來說,HTML 的壓縮有可能還會增加服務(wù)器的 CPU 負擔,得不償失 由于注釋對代碼有作用,小編使用的php壓縮html函數(shù)代碼 沒有去掉注釋,直接上代碼。 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 : 清除換行符,清除制表符,去掉注釋標記 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; } 有些站長朋友不推薦壓縮html ,主要原因除了上面所說的 php來壓縮HTML注意事項外,通過 gzip 壓縮已經(jīng)能達到很好的效果。另外,因為產(chǎn)生影響HTML的因素太多,例如靜態(tài)、動態(tài)、前端動態(tài)等,也沒什么量化指標,所以很難控制壓縮成什么樣。代碼更需要考慮執(zhí)行效率,而不是傳輸效率。對于動態(tài)頁面來說,HTML的壓縮很有可能還會增加服務(wù)器的CPU負擔,消耗服務(wù)器資源得不償失。
本文地址:http://www.gle-technology.com/others/14357.html