Web高性能開发之疯狂的HTML压缩.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Web高性能開发之疯狂的HTML压缩

Web高性能开发之疯狂的HTML压缩 前言:   上一篇随笔中网友skyaspnet问我如何压缩HTML,当时回答是推荐他使用gzip,后来想想,要是能把所有的html,jsp(aspx)在运行前都压缩成1行未免不是一件好事啊。一般我们启动gzip都比较少对html启动gzip,因为现在的html都是动态的,不会使用浏览器缓存,而启用gzip的话每次请求都需要压缩,会比较消耗服务器资源,对js,css启动gzip比较好是因为js,css都会使用缓存。我个人觉得的压缩html的最大好处就是一本万利,只要写好了一次,以后所有程序都可以使用,不会增加任何额外的开发工作。   在JS、CSS的合并、压缩、缓存管理一文中说到自己写过的1个自动合并、压缩JS,CSS,并添加版本号的组件。这次把压缩html的功能也加入到该组件中,流程很简单,就是在程序启动(contextInitialized or Application_Start)的时候扫描所有html,jsp(aspx)进行压缩。   压缩的注意事项:   实现的方式主要是用正则表达式去查找,替换。在html压缩的时候,主要要注意下面几点:   1. pre,textarea标签里面的内容格式需要保留,不能压缩。   2. 去掉html注释的时候,有些注释是不能去掉的,比如:!--[if IE 6] ..... ![endif]--   3. 压缩嵌入式js中的注释要注意,因为可能注释符号会出现在字符串中,比如: var url = ; // 前面的//不是注释   去掉JS换行符的时候,不能直接跟一下行动内容,需要有空格,考虑下面的代码: else return;   如果不带空格,则变成elsereturn。   4. jsp(aspx) 中很有可能会使用% %嵌入一些服务器代码,这个时候也需要单独处理,里面注释的处理方法跟js的一样。   源代码:   下面是java实现的源代码,也可以 猛击此处 下载该代码,相信大家都看的懂,也很容易改成net代码: import java.io.StringReader; import java.io.StringWriter; import java.util.*; import java.util.regex.*; /******************************************* * 压缩jsp,html中的代码,去掉所有空白符、换行符 * @author bearrui(ak-47) * @version 0.1 * @date 2010-5-13 *******************************************/ public class HtmlCompressor { private static String tempPreBlock = %%%HTMLCOMPRESS~PRE; private static String tempTextAreaBlock = %%%HTMLCOMPRESS~TEXTAREA; private static String tempScriptBlock = %%%HTMLCOMPRESS~SCRIPT; private static String tempStyleBlock = %%%HTMLCOMPRESS~STYLE; private static String tempJspBlock = %%%HTMLCOMPRESS~JSP; private static Pattern commentPattern = Ppile(!--\\s*[^\\[].*?--, Pattern.DOTALL | Pattern.CASE_INSENSITIVE | Pattern.MULTILINE); private static Pattern itsPattern = Ppile(\\s+?, Pattern.DOTALL | Pattern.CASE_INSENSITIVE | Pattern.MULTILINE); private static Pattern prePattern = Ppile(pre[^]*?.*?/pre, Pattern.DOTALL | Pattern.CASE_INSENSITIVE | Pattern.MULTILINE); private static Pattern taPattern = Ppile(textarea[^]*?.*?/textarea, Pattern.DOTALL | Pattern.CASE_INSENSITIVE | Pattern.MULTILIN

文档评论(0)

fv45ffsjjI + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档