zl程序教程

您现在的位置是:首页 >  后端

当前栏目

php压缩HTML函数轻松实现压缩html/js/Css及注意事项

JSPHPHTMLCSS 实现 函数 轻松 压缩
2023-06-13 09:14:44 时间
压缩HTML的起因
如何提高网页加载速度,需要怎么对html页面优化相信是每个拟提高建站技术站长曾想到的问题,其实网页优化的方法还是很多。

有童鞋询问higrid如何压缩HTML,也就是说能不能把所有的html、js、Css在运行前都压缩成一行,清除注释标记、换行符、空格、制表符等。这样一个直接的好处是减小html页面体积来提高前端加载速度。很多人认为启动gzip,但一般启动gzip都比较少对html启动gzip压缩,因为现在的html都是动态的,不会使用浏览器缓存,而启用gzip的话每次请求都需要压缩,会比较消耗服务器资源,对js,css启动gzip比较好是因为js,css都会使用缓存。而大家也用了很多软件过滤一下压缩,也有在线js/css/html压缩工具,higrid觉得也很麻烦,可读性很差。higrid认为如果将压缩功能做成一个函数的话,这样开发者看到的是未压缩的状态,但访客访问时,服务端的程序将html页面进行压缩,清除注释标记、换行符、空格、制表符等来达到减小了html体积的目的。如果您经常访问higrid.net,右键查看一下html源代码,会看到本篇html源代码经过了压缩处理。包括higrid.net提供的免费内容管理系统,输出的都是压缩html,去掉了空白、换行符、制表符。但higrid.net上面也有一些例外,就是higrid.net主要推荐在线表格、在线图形,包括jquery这些演示,为了方便访客,就没有启动压缩。

因此,higrid个人觉得压缩html的最大好处就是一本万利,只要写好了一次函数,以后在需要运用的时候调用一下就可以了,所有程序都可以使用,不会增加任何额外的开发工作。今天higrid就给大家分享几个个人觉得好用的函数,请大家不妨试试看,相信大家会喜欢。

采用php来压缩HTML
由于higrid对php比较感兴趣,所以使用php来压缩HTML,当然使用其他语言也差不多,例如使用asp来压缩HTML,道理应该一样的。

higrid将压缩html的功能用php写成一个函数,其实网上这样的php压缩函数也很多,不信你可以百度或者谷歌,但多数不是很好用,特别在压缩js或压缩CSS的时候,主要原因是一些压缩注释等方面不同导致出现问题。先看这个函数:
复制代码代码如下:

/**
*压缩html:清除换行符,清除制表符,去掉注释标记
*@param$string
*@return压缩后的$string
**/
functioncompress_html($string){
$string=str_replace("\r\n","",$string);//清除换行符
$string=str_replace("\n","",$string);//清除换行符
$string=str_replace("\t","",$string);//清除制表符
$pattern=array(
"/>*([^]*)*</",//去掉注释标记
"/[\s]+/",
"/<!--[^!]*-->/",
"/\"/",
"/\"/",
""/\*[^*]*\*/""
);
$replace=array(
">\\1<",
"",
"",
"\"",
"\"",
""
);
returnpreg_replace($pattern,$replace,$string);
}

php来压缩HTML注意事项
php来压缩HTM实现的方式主要是用正则表达式去查找,替换。在html压缩的时候,主要要注意下面几点:

1.HTML文档中,多个空白字符等价为一个空白字符。也就是说换行等空白字符的删除是不安全的,有可能导致部分元素的样式产生差异。
2.html中有一个pre,表示preformattedtext.里面的任何空白,都不能被删除,因此pre,textarea标签里面的内容格式需要保留,不能压缩。
3.HTML中有可能有IE条件注释。这些条件注释是文档逻辑的一部分,不能被删除。因此去掉html注释的时候,有些注释是不能去掉的,比如:
4.压缩嵌入式js中的注释要注意,因为可能注释符号会出现在字符串中,比如:varurl="http://www.higrid.net";//前面的//不是注释
5.对于动态页面来说,HTML的压缩有可能还会增加服务器的CPU负担,得不偿失

higrid使用的php压缩html函数代码
由于注释对代码有作用,higrid使用的php压缩html函数代码没有去掉注释,直接上代码。
复制代码代码如下:

functionhigrid_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($chunksas$c)
{
if(strpos($c,"<pre")!==0)
{
//[higrid.net]removenewlines&tabs
$c=preg_replace("/[\\n\\r\\t]+/","",$c);
//[higrid.net]removeextrawhitespace
$c=preg_replace("/\\s{2,}/","",$c);
//[higrid.net]removeinter-tagwhitespace
$c=preg_replace("/>\\s</","><",$c);
//[higrid.net]removeCSS&JScomments
$c=preg_replace("/\\/\\*.*?\\*\\//i","",$c);
}
$higrid_uncompress_html_source.=$c;
}
return$higrid_uncompress_html_source;
}

php压缩html函数代码总结
有些童鞋不推荐压缩html,主要原因除了上面所说的php来压缩HTML注意事项外,通过gzip压缩已经能达到很好的效果。另外,因为产生影响HTML的角色太多(静态,动态,前端动态),也没什么量化指标,所以很难控制压缩成什么样(代码写成什么程度)。代码更需要考虑执行效率,而不是传输效率。对于动态页面来说,HTML的压缩有可能还会增加服务器的CPU负担,得不偿失。Google的压缩网页是因为早期他希望首页文本尽可能控制在一个或两个包内,而且他的首页太重要了,流量也很离谱。压缩一个字节,总流量一算都是个不小的数字,自然也就是必要之举了。进一步的压缩存在问题,除非能像Google一样充分测试(Google也仅压缩了少部分核心服务的页面),否则不推荐对HTML进行压缩处理。

但使用higrid.net的php压缩html函数代码,能很好的解决这个问题。好了,还不快试试。