C# 如何减少页面加载时间(结合javascript)?

C# 如何减少页面加载时间(结合javascript)?,c#,jquery,asp.net-mvc,visual-studio-2010,jqgrid,C#,Jquery,Asp.net Mvc,Visual Studio 2010,Jqgrid,使用ASP.NETMVC2创建的页面加载需要1.7秒。 它包含13个js文件,如下所示。Firebug显示每个js文件加载都返回304响应,但由于有13个文件,因此可能会大大增加页面加载时间。 Chrome audit红色警报建议合并js文件 如何使用ASP.NET MVC 2自动或以其他方式将它们合并到单个文件以减少加载时间? 项目中应该有单独的js文件,以允许替换它们,但这些文件应该交付 可能是单个js文件 使用jqgrid、jquery、jqueryui、tinymce和一些jquery插

使用ASP.NETMVC2创建的页面加载需要1.7秒。 它包含13个js文件,如下所示。Firebug显示每个js文件加载都返回304响应,但由于有13个文件,因此可能会大大增加页面加载时间。 Chrome audit红色警报建议合并js文件

如何使用ASP.NET MVC 2自动或以其他方式将它们合并到单个文件以减少加载时间? 项目中应该有单独的js文件,以允许替换它们,但这些文件应该交付 可能是单个js文件

使用jqgrid、jquery、jqueryui、tinymce和一些jquery插件js文件,如下所示。 使用Visual Web Developer Express 2010。应用程序在Mono 2.10/Apache和Windows/IIS下运行

site.master包含:

    <%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>
    <!DOCTYPE html>
    <html>
    <head runat="server">
        <meta charset="utf-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=0.1" />
        <link rel="stylesheet" href="../../themes/redmond/jquery-ui-1.8.12.custom.css" type="text/css" />
        <link href="../../Scripts/jqgrid/css/ui.jqgrid.css" rel="stylesheet" />
        <link href="../../Content/Css/Site.css" rel="stylesheet" />
        <asp:ContentPlaceHolder ID="HeadContent" runat="server" />
        <title>
            <asp:ContentPlaceHolder ID="TitleContent" runat="server" />
        </title>
        <script type="text/javascript">
            "use strict";
            var BASE_URL = '<%= ResolveUrl("~/") %>';
        </script>
        <script src="<%= Url.Content("~/Scripts/jquery/jquery-1.7.1.js")%>" type="text/javascript"></script>
        <script src="<%= Url.Content("~/Scripts/jquery-ui-git.js")%>" type="text/javascript"></script>
        <script src="<%= Url.Content("~/Scripts/i18n/jquery.ui.datepicker-et.js")%>" type="text/javascript"></script>
        <script src="<%= Url.Content("~/Scripts/jquery.contextmenu-fixed2.js")%>" type="text/javascript"></script>
        <% if (CurUser.GetLanguage() == "EST")
           { %>
        <script src="<%= Url.Content("~/Scripts/jqgrid/js/i18n/grid.locale-et.js")%>" type="text/javascript"></script>
        <% }
           else
           { %>
        <script src="<%= Url.Content("~/Scripts/jqgrid/js/i18n/grid.locale-en.js")%>" type="text/javascript"></script>
        <% } %>
        <script type="text/javascript">
            $.jgrid.no_legacy_api = true;
            $.jgrid.useJSON = true;
    </script>
    <script type="text/javascript" src="<%= Url.Content("~/Scripts/jqgrid/jquery.jqGrid.src-multiselect1-deleteandsortpatches.js")%>"></script>
    <script type="text/javascript" src="<%= Url.Content("~/Scripts/jqgrid/jQuery.jqGrid.dynamicLink.js")%>"></script>
    <script src="<%= Url.Content("~/Scripts/json2.js")%>" type="text/javascript"></script>
    <script src="<%= Url.Content("~/Scripts/jquery.form.js")%>" type="text/javascript"></script>
    <script src="<%= Url.Content("~/Scripts/TinyMCE/tiny_mce_src.js")%>" type="text/javascript"></script>
    <script src="<%= Url.Content("~/Scripts/TinyMCE/jquery.tinymce.js")%>" type="text/javascript"></script>
    <script src="<%= Url.Content("~/Scripts/myscripts.js")%>" type="text/javascript"></script>
    <script type="text/javascript">
    var 
        $grid;
    $(function() {
        "use strict";

<% if (TempData["Message"]!=null) {
setTimeout( function() {
   showMessage ( '<%= TempData["Message"] as string %>');
...

“严格使用”;
var BASE_URL='';
$.jgrid.no_legacy_api=true;
$.jgrid.useJSON=true;
变量
$grid;
$(函数(){
“严格使用”;

要克服这些情况,您有许多技巧。其中一些技巧包括:

页面特定的JS:尝试根据需要添加javascript文件。不要添加页面中未使用的任何不必要的JS

GZIP压缩:对页面和静态js和css文件应用GZIP压缩

缓存:在服务器级别(IIS),可以对这些静态文件(如JS或CSS)应用缓存

祝你好运!!

我推荐使用

使用单独的.js文件确实有助于减少页面加载时间。您只需包含一个类似以下内容的文件:

head.js("/path/to/jquery.js", "/google/analytics.js", "/js/site.js", function() {     
   // all done     
});

我想建议你用这个做一个实验

首先,您可以尝试连接页面上使用的所有JavaScript和所有内联JavaScript代码。您应该保持原因文件的顺序。在我看来,您将获得两个版本的结果:一个是
CurUser.GetLanguage()==“EST”
,另一个是
CurUser.GetLanguage()!==“EST”

在获得一个JavaScript文件后,您可以使用闭包编译器,该编译器具有
高级优化的
编译级别
(请参阅)它可以删除所有未使用的JavaScript代码。因此,您将获得页面上真正使用的jQuery、jQuery UI和其他库的子集。生成的JavaScript代码将与其他页面上的代码相同,但可能非常小,可以作为任何单独的文件进行更好的优化。

允许您保留separa在运行时合并和缩小javascript文件

这真是一种享受

看起来他们在asp.net 4.5中加入了类似的内容:


将文件捆绑在一起

当前大多数主流浏览器将每个主机名的同时连接数限制为6个。这意味着,当处理6个请求时,浏览器将对主机上的其他资产请求进行排队

捆绑可以显著提高您的第一页点击率下载时间

通过将多个CSS文件和Javascript文件组合成单个CSS文件和Javascript文件,绑定减少了对服务器的单个HTTP请求的数量


本网站提供了一个很好的教程,介绍如何通过五个简单的步骤将捆绑添加到应用程序中:

js文件位于浏览器缓存中。Web服务器发送304响应。在这种情况下,head.js似乎不会减少加载时间。如果使用head.js,则仍会发出每个页面的请求并接收304响应。然后,最好的方法是使用som类似的。我在我的一些项目中使用它。第一次配置它可能很困难,但它会给你很好的效果。操作的原则是最小化一些js文件并将其编译成一个。因此,你可以将jquery、jquery ui、datepicker和其他文件编译成一个。当你需要用另一个文件替换一个文件时,你应该重新编译您的js文件(在某些cms中,它会自动执行)。它还可以帮助优化和最小化css文件。1.使用所有js文件2.响应头包含
内容编码gzip
,因此看起来响应是压缩的2-3:这是web应用程序:文件在99%的情况下已经存在于浏览器缓存中,apache返回304响应。因此缓存和gzip压缩无法减少降低加载速度。我阅读了您提供的链接,但没有找到任何内容(除了我询问的合并文件)这可以作为这个问题的答案。@Andru,找到这个线程,谢谢。我试过了,但是关于jQuery的错误没有定义。如何修复或找到原因?我更新了这个问题。我在简单优化工作中也发布了相关问题,但高级优化会导致错误。@Andrus:如果代码在高级方面有一些问题_优化
您可以使用
简单优化
或使用例如。最小化的文件不会像使用
高级优化
那样小,但所有这些都会起作用,您的主要答案问题也会得到解决。当然,我支持您至少已经为所有静态文件打开GZIP压缩。ADVANCED optimization probalby将jQuery重命名为其他名称。在哪里可以找到jQuery的外部设置文件,如google closure命令文档中所述,可以包括该文件以防止出现这种情况?