我在我的网络应用程序中使用JQuery库和一些自定义JavaScripts。我将它们组合并压缩成一个JavaScript文件并将其放在正文末尾作为静态脚本,通常可以获得最佳性能,同意吗?
<script src="../js/Default.js" type="text/javascript"></script>
此外,还有一些.net ajax控件,例如<ajax:calendarExtender>
应用于某些页面。有些文章http://am-blog.no-ip.org/BlogEngine/post/2010/04/12/Increase-AJAX-Performance-by-combining-Scripts-using-Scriptmanager-Composite-Scripts.aspx建议使用<asp:CompositeScript>
来组合这些控件所需的默认asp.net JavaScripts,例如<ajax:calendarExtender>
由于我的网络应用只有一个 ScriptManager ,它位于表格的主页面中。复合和压缩这些.net JS的最佳方法是使用类似于我的静态脚本?由于这些ajax控件并未应用于每个页面,我是否仍应在Master Page中复合所有JavasSripts? (猜测每个子页面中的reference-proxy都不会有用吗?)
此致
答案 0 :(得分:0)
我认为除了gZip之外,你不需要压缩更多这些文件。
当然,你需要知道webresource上的js文件不是调试版本。
如果您尝试更改此文件的位置,例如尝试将它们放在最后,那么可能会出现javascript错误,因为这些函数可能需要通过asp.net控件找到
我只建议在客户端添加一些缓存。您可以在Application Begin Request上执行此操作 - 类似于:
protected void Application_BeginRequest(Object sender, EventArgs e)
{
// get the file name
string cTheFile = HttpContext.Current.Request.Path;
// here just see if this is the files that you wish to add some extra cache
if (cTheFile.EndsWith("WebResource.axd", StringComparison.InvariantCultureIgnoreCase))
{
// add some cache - what ever you think, or add an eTag
app.Response.Cache.SetExpires(DateTime.UtcNow.AddHours(4));
app.Response.Cache.SetMaxAge(new TimeSpan(4, 0, 0));
app.Response.Cache.SetCacheability(HttpCacheability.Public);
}
}
答案 1 :(得分:0)
混淆会缩小脚本的大小(有时会非常显着)。 IMO 全部混淆是有益的。