asp.net-mvc - 为什么在 MVC 中使用包会导致内存使用增加

标签 asp.net-mvc bundle

我们已将多个站点更新为 MCV4 版本,同时我们利用了使用 dll System.Web.Optimization 创建 bundle 的功能。一切正常。

但是,我们遇到了以下问题: 当调用 javascript 时,应用程序包分配大约 50 MB RAM,但不会释放它。 bundle 中包含的 javascript 总共约为 2 Mb。

注意: 我们在全局asax中创建Bundles,事件“Application_Start”

   protected virtual void Application_Start()
        {

        AreaRegistration.RegisterAllAreas();

        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterBundles(BundleTable.Bundles);
        RegisterRoutes(RouteTable.Routes);
    }



 protected virtual void RegisterBundles(BundleCollection bundles)
        {
        bundles.Add(new StyleBundle("~/content/all.css").Include(
                    "~/content/site.css"
                    ));

        bundles.Add(new StyleBundle("~/content/themes/base/base.all.css").Include(
                    "~/Content/themes/base/jquery-ui-1.8.23.custom.css",
                    "~/content/themes/base/kendo.common.css",
                    "~/content/themes/base/kendo.totalcom.css",
                    "~/Content/themes/base/jquery.contextmenu.css",
                    "~/content/themes/base/tipsy.css",
                    "~/content/themes/base/jquery.ibutton.css"
                    ));

        bundles.Add(new ScriptBundle("~/Scripts/all.js").Include(
                "~/Scripts/jquery-1.8.2.js",
                "~/Scripts/modernizr-1.7.js",
                "~/Scripts/jquery-ui-1.8.22.custom.js",
                "~/Scripts/jquery.validate.js",
                "~/Scripts/jquery.validate.unobtrusive.js",
                "~/Scripts/jquery.unobtrusive-ajax.js",
                "~/Scripts/conditional-validation.js",
                "~/Scripts/fileuploader.js",
                "~/Content/tiny_mce/jquery.tinymce.js",
                "~/Scripts/kendo.all.js",
                "~/Scripts/kendo.aspnetmvc.js",
                "~/Scripts/jquery.contextmenu.js",
                "~/Scripts/jquery.tipsy.js",
                "~/Scripts/jquery.checkradio.js",
                "~/Scripts/jquery.metadata.js",
                "~/Scripts/jquery.ibutton.js",
                "~/Scripts/jquery.easing.js",
                "~/Scripts/functions.js",
                "~/Scripts/Erp.js",
                "~/Scripts/Cms.js"
            ));
    }

在母版页中调用 bundle

<%: Styles.Render("~/Content/all.css") %>
<%: Styles.Render("~/content/themes/base/base.all.css") %>
<%: Scripts.Render("~/Scripts/all.js") %>

编辑: 当执行以下行时,会使用额外的 50mb 内存

<%:
Scripts.Render("~/Scripts/all.js")
 %>

还有人遇到过这个问题吗?有什么建议可以减少内存消耗吗?

最佳答案

我最近不得不处理在服务 kendo.all.js 时向我的 IIS 进程添加 200MB 以上内存的 bundle (这是惊人的 5MB;缩小版本约为 2MB),这太荒谬了。我计划将该剑道文件分成几个包并消除我不需要的控件,但我想稍后再处理。

就我而言,我有来自供应商的 Assets 的未缩小版本和缩小版本。 I don't need Bundles to minify anything 。我需要它做的就是在 debug="true" 时发出指向未缩小脚本的直接链接,并在 debug="false"< 时发出指向串联但预先缩小的脚本包的链接。/.

在我的 BundleConfig.cs 中,我一直在为我的供应商文件使用 ScriptBundle,它将尝试缩小,从而导致我已经提到的三角帽。仅使用普通的旧 Bundle 即可为我提供所需的功能,而无需尝试缩小,并节省了大量内存。滚蛋吧,ScriptBundle!

关于asp.net-mvc - 为什么在 MVC 中使用包会导致内存使用增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17294272/

相关文章:

android - 在 Android 中的 Activity 和 Intent 之间传递整数总是导致零/空

asp.net-mvc - 我应该在我的服务`DTO 还是客户端 ViewModel 中定义 UI 默认值

asp.net-mvc - ASP.NET 核心 MVC : setting expiration of identity cookie

java - 使用 bundle 在 Activity 之间传输数据

osgi - 使用同一文件安装两个 bundle

c# - 如何在 MVC4 StyleBundle 中引用 *.min.css 文件?

asp.net - 静态文件请求不会引发application_error事件

jquery - 如何使用 AJAX 将字符串传递给 Controller

asp.net-mvc - 在 ASP.NET MVC 中,放置我的 Entity Framework DataContext 类的 "best practice"位置(文件夹)在哪里?

java - getExtras 导致应用程序崩溃