我需要从我的aspx页面中删除一些内容。 1)需要从我的aspx页面中删除空格。 2)需要删除所有html&来自我的aspx页面的css评论。 3)需要删除javascript评论,如单行&多行评论
请给我最好的代码来完成上述工作。
protected override void Render(HtmlTextWriter writer)
{
using (HtmlTextWriter htmlwriter = new HtmlTextWriter(new System.IO.StringWriter()))
{
base.Render(htmlwriter);
string html = htmlwriter.InnerWriter.ToString();
if ((ConfigurationManager.AppSettings.Get("RemoveWhitespace") + string.Empty).Equals("true", StringComparison.OrdinalIgnoreCase))
{
// regex for removing white space
html = Regex.Replace(html, @"(?<=[^])\t{2,}|(?<=[>])\s{2,3}(?=[<])|(?<=[>])\s{2,3}(?=[<])|(?=[\n])\s{2,3}", String.Empty);
// regex for removing js comment
//
html = Regex.Replace(html, @"(?<=[^])\t{2,}|(?<=[>])\s{2,}(?=[<])|(?<=[>])\s{2,11}(?=[<])|(?=[\n])\s{2,}|(?=[\r])\s{2,}", String.Empty);
// regex for removing white space again
html = Regex.Replace(html, @"[\f\r\t\v]?([\n\xFE\xFF/{}[\];,<>*%&|^!~?:=])[\f\r\t\v]?", "$1");
// regex for removing html comment
html = Regex.Replace(html, @"((<!-- )((?!<!-- ).)*( -->))(\r\n)*", String.Empty);
// regex for removing line break & carriage return
html = Regex.Replace(html, @"((\/\*[\s\S]+?\*\/)|(\/\/.+))", String.Empty);
html = html.Replace(";\r\n", ";");
}
writer.Write(html.Trim());
}
}
the above code remove white space js comment but affect my script tag which is like
<script type="text/javascript">
if(!window.jQuery)
{
document.write("<script type='text\/javascript' src=<%= this.ResolveClientUrl("~/Scripts/jquery-1.4.1.js") %>><\/script>");
}
</script>
所以请向我展示正则表达式,它不会影响脚本中&lt; / script&gt; 这种类型的字符。 请给我一个正则表达式的另一个请求 1)需要从我的aspx页面中删除空格。 2)需要删除所有html&amp;来自我的aspx页面的css评论。 3)需要删除javascript评论,如单行&amp;多行评论
我期待来自论坛人员的优化代码。感谢
答案 0 :(得分:1)
首先,我建议将正则表达式放在一边,因为你将以破解的html / javascript和其他代码结束。
你也花了太多时间在渲染上运行这个函数只是为了获得一些空间,无论如何它们都很好地压缩了gzip。
我只建议使用Microsoft Ajax Minifier最小化css和javascript 。
还有其他一些,但是我已经用jQuery和Yahoo YUI之类的困难库检查了这个,并且在运行中创建了最终代码,没有任何错误。我还建议将所有javascript文件连接到一个,然后制作minifier文件,然后缓存它并使用缓存。我已经读过这个minifier是asp.net 4.5的一部分,并且带有新功能,几乎可以自动完成所有这些功能。
这是飞行中minifier javascript的一个简单示例。请注意,首先我们合并所有文件,然后将它们全部发送到minifier。如果你将每个javascript文件分开,你就不能将它们合并在一起,因为minifier删除了最后一个未使用的';'字符并使一些其他参数发生变化,以便在迷你后不能将它们组合起来。
Minifier MyMin = new Minifier();
CodeSettings cs = new CodeSettings();
cs.MinifyCode = true;
cs.OutputMode = OutputMode.SingleLine;
FinalJavascript = MyMin.MinifyJavaScript(MyOriginalJavascript, cs);