【问题标题】:What is the benefit of ASP.NET bundling and minification in runtime?ASP.NET 在运行时捆绑和缩小有什么好处?
【发布时间】:2012-10-09 17:07:41
【问题描述】:

我了解如何使用 asp.net 的新捆绑和缩小功能。它们在开发过程中很有帮助。

在生产部署中使用它们有什么好处吗?如果您只是将捆绑/缩小的文件放在 Web 服务器上,系统性能会更好吗?总体而言,如果它们只是静态文件,似乎会运行更少的代码。

注意:我了解捆绑和缩小 js/css 的好处。我只是质疑使用活动运行时进程在生产系统中生成这些文件的价值,而不是简单地将它们存储在磁盘上并将它们作为静态文件引用。

【问题讨论】:

    标签: asp.net-mvc bundling-and-minification


    【解决方案1】:

    捆绑和缩小在生产中比在开发中更有用。 它可以显着缩短您的首页点击下载时间。

    • 捆绑通过将多个 CSS 文件和 Javascript 文件合并到单个 CSS 文件和 javascript 文件中来减少对服务器的单个 HTTP 请求的数量。

    • 缩小通过删除空格、cmets 和其他不必要的字符来减少 CSS 和 javascript 文件的文件下载大小。

    这样的小优势在生产环境中比在开发环境中更为明显。所以最好在生产中使用捆绑和缩小。

    针对您的问题,在运行时捆绑/缩小没有明显的好处。此功能只是为了使开发人员的工作更轻松。因此,如果您确定自己在做什么,最好在生产环境中手动捆绑/缩小资产。

    更新: 根据MSDN 的说法,在运行时捆绑/缩小确实有好处

    ASP.NET 4.5 中的捆绑和缩小是在运行时执行的,因此进程可以识别用户代理(例如 IE、Mozilla 等),从而通过针对用户浏览器(例如,当请求来自 IE 时,删除 Mozilla 特定的内容)。`

    动态捆绑的强大之处在于您可以包含静态 JavaScript,以及编译成 JavaScript 的语言中的其他文件。`

    例如,CoffeeScript 是一种编译成 JavaScript 的编程语言

    【讨论】:

    • 如果您要从其他地方复制和粘贴一段文本,请附上源链接。
    • 抱歉,我肯定说得不够清楚。我将编辑问题以使其更清楚。我了解使用捆绑/缩小文件的好处。我只是在质疑我们是否需要在生产中使用捆绑和缩小过程。为什么不直接使用捆绑/缩小的资产?
    • 伙计们,这并不能回答问题。问题是为什么要在生产中生成捆绑/缩小的文件,而不是将它们部署为静态文件。
    • 谢谢,我就是这么想的。设计时的好处,但在运行时没有那么多。
    • 添加到资源 url 的版本哈希字符串是另一个好处。我想您也可以手动执行此操作...但是您可以以优化的名义手动执行很多操作
    【解决方案2】:

    捆绑和缩小提供 2 个基本功能以提高页面加载性能。

    捆绑 - 将所有提供的脚本/ CSS 捆绑在一个文件中,这样只有浏览器需要加载一个文件而不是多个文件。
    注意-> 一般浏览器只能同时请求 6 个请求从服务器获取资源。其他请求由浏览器排队等待以后处理。因此,如果我们有多个文件,那么它可能必须在请求队列中等待。

    缩小 - 缩小过程通过删除 cmets、多余的空格和重命名变量名来生成缩小文件。因此,这会减小文件大小并加快下载速度。

    【讨论】:

    • 问题不在于捆绑/缩小,而是关于在生产服务器上运行时进行捆绑/缩小的过程是否有意义,而不仅仅是将捆绑/缩小的文件部署为部署过程的一部分.
    【解决方案3】:

    缩小 - 文件更小,传输的 kb 更少,页面加载速度更快。

    捆绑 - 浏览器限制每个 http 主机的连接。这意味着用户访问您的页面,并且您(假设)有 24 个脚本和链接(css)标签,您的浏览器一次处理 6 个(大多数浏览器的限制) - 减慢了页面加载速度。 捆绑使浏览器将您的所有文件视为一个文件 - 覆盖此限制。

    【讨论】:

    • 这没有回答问题。问题是为什么要在生产中生成捆绑/缩小的文件,而不是将它们部署为静态文件。
    • 至于真正的问题,我看不到部署静态文件的好处。使用适当的缓存策略,即使您的应用程序需要生成文件,它也会生成一次。另一方面,如果您使用静态文件,则您在部署计划中添加了另一个(如果我可以这么说的话,是冗余的)。
    • 不知道有 6 个时间限制。荣誉
    【解决方案4】:

    捆绑的另一个好处是它减少了缓存问题。当我们使用键将其加载到页面时,如下所示。

    <script src="/bundles/jquery?v=FVs3ACwOLIVInrAl5sdzR2jrCDmVOWFbZMY6g6Q0ulE1"></script>
    

    每次我们更改脚本时,它都会生成不同的密钥。因此,如果我们更改某些内容,文件将被缓存。但是当我们不使用它时,因为脚本文件具有相同的名称,有时我们必须清除缓存才能看到更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-16
      • 2013-02-21
      • 1970-01-01
      • 2012-12-25
      • 1970-01-01
      • 2018-06-21
      • 1970-01-01
      • 2012-05-23
      相关资源
      最近更新 更多