Asp.Net MVC在响应期间组合并删除内联脚本

时间:2010-06-19 15:42:58

标签: javascript asp.net-mvc-2 httpresponse minify

我一直在对我正在处理的几个网站进行一些性能分析,我注意到一个大问题是内联脚本。对于外部编写程序,我编写了一个http处理程序,它将javascript组合,缩小和压缩到一个文件中。然后通过散列文件名存储它以供以后重用。

我想知道(不确定这是一个好主意,但我发帖以获得一些反馈)是我删除所有脚本元素并在其中包含脚本文本并将它们合并为一个文件。然后,我使用与外部脚本相同的过程,并将它们组合成一个脚本。

约翰

2 个答案:

答案 0 :(得分:1)

内联脚本总是进入页面内部,因此需要遍历每个帖子或进出服务器。由于您正在使用MVC,因此您可以很容易地在项目中使用非突兀的脚本文件,因为您可以对渲染的html进行相当多的控制。

您还想查看SquishIt

Grz,Kris。

答案 1 :(得分:0)

可以使用外部文件缩小内联javascripts并将其捆绑。

正如我在此提到的Minify inline javascript during build for ASP.net?

  

使用模板化Razor助手,您可以创建一个类似的扩展方法   下面的那个:

public static MvcHtmlString AddScriptSource(this HtmlHelper helper, Func<dynamic, HelperResult> source, string key)
{
    string scriptSource = source(null).ToHtmlString();

    // Cache scriptSource here

    return MvcHtmlString.Empty;
}
     

您可以这样使用:

@Html.AddScriptSource(@<text>$(document).ready(function() { $('h1').text('The current controller is @ViewContext.RouteData.Values["controller"].ToString()'); });</text>, "test")