我一直在对我正在处理的几个网站进行一些性能分析,我注意到一个大问题是内联脚本。对于外部脚本,我编写了一个 http 处理程序,它将 javascript 组合、缩小和 gzip 到一个文件中。然后通过散列文件名将其存储以供以后重复使用。
我想知道(不确定这是否是一个好主意,但我发布以获得一些反馈)是如果我删除所有脚本元素,其中包含脚本文本并将它们合并到一个文件中。然后,我使用与外部脚本相同的过程并将它们组合成一个脚本。
约翰
我一直在对我正在处理的几个网站进行一些性能分析,我注意到一个大问题是内联脚本。对于外部脚本,我编写了一个 http 处理程序,它将 javascript 组合、缩小和 gzip 到一个文件中。然后通过散列文件名将其存储以供以后重复使用。
我想知道(不确定这是否是一个好主意,但我发布以获得一些反馈)是如果我删除所有脚本元素,其中包含脚本文本并将它们合并到一个文件中。然后,我使用与外部脚本相同的过程并将它们组合成一个脚本。
约翰
内联脚本总是进入页面内部,因此每个帖子都需要遍历或往返服务器。由于您使用的是 MVC,因此很容易在项目中仅包含非侵入性的脚本文件,因为您对呈现的 html 有相当多的控制。
您还想查看SquishIt。
格兹,克里斯。
可以将内联 JavaScript 与外部文件一起缩小和捆绑。
正如我在这里提到的,在为 ASP.net 构建期间缩小内联 javascript?
使用模板化 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")