压缩aspx页面删除多余空格的两种方法
两种方法实现:
1)一行一行的读取aspx文件然后处理
2)一次性读取aspx文件然后处理
处理逻辑:
替换" "为" "(将两个空格替换为一个空格),将所有的换行符替换为空字符(极限压缩)
注意事项:
1)一行一行处理在极限压缩的情况下需要额外的处理服务端控件换行的情况,比如
Line 1:<asp:Label runat="server"
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;
}
/// <summary>
/// 压缩指定路径的文件空白字符串和换行符
/// 压缩说明
/// 1)采取File.ReadAllLines读取所有行每一行做处理工作
/// 2)服务器控件最好写在一行内,只做了尾部标签与runat="server"跨行的处理,开始标签跨行为处理
/// 3)文件不能有单行注释"//"
/// 4)替换掉了换行符和空格
/// </summary>
/// <param name="filePath">文件路径</param>
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);
}
/// <summary>
/// 压缩指定路径的文件空白字符串和换行符
/// 压缩说明
/// 1)一次性读取出所有的文本替换掉换行符和空白
/// 2)无须处理服务器控件换行的问题
/// 3)压缩不彻底,A元素的结束标签和B开始标签之间可能仍然有一个空格
/// </summary>
/// <param name="filePath"></param>
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);
}
相关文章
- 这篇文章主要介绍了清除aspx页面缓存的程序实现方法,非常实用,需要的朋友可以参考下...2020-06-25
- ASPX文件是一种Web文件,它是网站的网页源文件,里面全是代码。这种文件是由微软的ASP.NET语言开发出来的...2021-09-22
- 许多页面的底部或头部内容都是一样的,这样的话我们可以直接建立一个html页面将头部或底部的代码放到html页中...2021-09-22
- 把aspx页面伪装成静态html格式的实现代码,主要是利于搜索引擎的收录。...2021-09-22
- 把用户在TextBox输入的文字创建为一个图片,ASCX的ImageButton的ImageUrl重新指向这刚产生的图片,接下来介绍下ASPX向ASCX传值,感兴趣的朋友可以参考下哈...2021-09-22
- 这篇文章介绍了IIS 浏览aspx页面出现无法显示XML页的解决方法,有需要的朋友可以参考一下...2021-09-22
基于.NET中:自动将请求参数绑定到ASPX、ASHX和MVC的方法(菜鸟必看)
这篇文章的目的就是告诉初学者如何自动将客户端用AJAX发送的参数自动绑定为强类型的成员属性或方法参数...2021-09-22- 这篇文章介绍了将.aspx转换为.htm的两种方法,有需要的朋友可以参考一下,希望对你有所帮助...2021-09-22
- 最简单使IIS支持ASPX的权限设置(不建议服务器设置),一般用于个人电脑测试...2016-01-27
- 下面小编就为大家带来一篇aspx后台传递Json到前台的两种接收方法推荐。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2021-09-22
- 这篇文章主要介绍了压缩aspx页面移除多余空格的两种方法,可以在发布页面之前压缩aspx,无须浪费web server的cpu,需要的朋友可以参考下...2021-09-22
- 这篇文章主要是对aspx与ascx,ashx的用法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助...2021-09-22
win2003 IIS6,能访问html页 但是不能访问aspx页解决办法汇总
win2003 sp2 系统。装上IIS6后,html正常访问,但是aspx页就是访问不了,日志文件也不做任何问题的记录。...2016-01-27- 这篇文章主要介绍了ashx以及ashx文件与aspx文件之间的区别。需要的朋友可以过来参考下,希望对大家有所帮助...2021-09-22