压缩aspx页面删除多余空格的方法
创始人
2024-11-29 03:21:58
0次

两种方法实现:
1)一行一行的读取aspx文件然后处理
2)一次性读取aspx文件然后处理 
处理逻辑:
替换"  "为" "(将两个空格替换为一个空格),将所有的换行符替换为空字符(极限压缩)
注意事项:
1)一行一行处理在极限压缩的情况下需要额外的处理服务端控件换行的情况,比如

复制代码 代码如下:


Line 1:Line 2: ID="lb1"   ....
Line 3:.../> 


这种情况 一行一行处理会出问题

2) 另外JS脚本中内联的单行注释
推荐使用"/**/"代替"//"
使用结果:

一行行的处理比一次性处理稍快,对于两三百行的aspx文件,差距在毫秒级别。不过对整个项目进行处理,随着文件数增多,差距应该会体现出来。
一次性读取处理可以不使用极限压缩,这样服务器控件和内联单行注释的问题可以不用考虑。
我一般很少使用内联注释和单行注释以及服务器控件所以压缩效果非常明显,一般500-600行的源码压缩后不到50行,大小减少约三分之一。
不过这种压缩效果可能和你是否使用服务端数据列表控件以及如何使用有很大的关系 ,我一般只使用repeater。

复制代码 代码如下:


public static String Replace(String source,String oldStr,String newStr)
       {
           int count = Regex.Matches(source, oldStr).Count;
           for (int i = 0; i < count; i++)
           {
               source = source.Replace(oldStr, newStr);
           }
           return source;
       }

       ///


       /// 压缩指定路径的文件空白字符串和换行符
       /// 压缩说明
       /// 1)采取File.ReadAllLines读取所有行每一行做处理工作
       /// 2)服务器控件最好写在一行内,只做了尾部标签与runat="server"跨行的处理,开始标签跨行为处理
       /// 3)文件不能有单行注释"//"
       /// 4)替换掉了换行符和空格
       ///

       /// 文件路径
       public static void CompressLineByLine(String filePath)
       {
           if (!File.Exists(filePath))
           {
               Console.WriteLine("文件不存在,检查路径{0}", filePath);
               return;
           }
           var start = DateTime.Now;
           Console.WriteLine("正在压缩文件:{0}\r\n开始于{1}...",
filePath,start.ToString());
           var lines = File.ReadAllLines(filePath,
Encoding.GetEncoding("GB2312"));
           for (int i = 0; i < lines.Length; i++)
           {
               var item = lines[i].Trim();
               if (item.IndexOf("runat=\"server\"") > -1)
                   item += " ";
               item = item.Replace("\r\n", "");
               item = Replace(item, "  ", " ");
               lines[i] = item;
           }
           File.WriteAllText(filePath, string.Join("", lines),
Encoding.GetEncoding("GB2312"));
           var end = DateTime.Now;
           Console.WriteLine("结束于{0}...", end.ToString());
           Console.WriteLine("====耗时====\r\n{0}\r\n", end - start);
       }

       ///


       /// 压缩指定路径的文件空白字符串和换行符
       /// 压缩说明
       /// 1)一次性读取出所有的文本替换掉换行符和空白
       /// 2)无须处理服务器控件换行的问题
       /// 3)压缩不彻底,A元素的结束标签和B开始标签之间可能仍然有一个空格
       ///

       ///
       public static void CompressAtOneTime(String filePath)
       {
           var start = DateTime.Now;
           Console.WriteLine("正在压缩文件:{0}\r\n开始于{1}...", filePath,
start.ToString());
           var lines = File.ReadAllText(filePath);
           File.WriteAllText(filePath, Replace(Replace(lines, "\r\n",
""),"  "," "), Encoding.GetEncoding("GB2312"));
           var end = DateTime.Now;
           Console.WriteLine("结束于{0}...", end.ToString());
           Console.WriteLine("====耗时====\r\n{0}\r\n", end - start);
       }

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...