代码之家  ›  专栏  ›  技术社区  ›  Ramesh César Landesa

缩小ASP.NET应用程序的HTML输出

  •  34
  • Ramesh César Landesa  · 技术社区  · 16 年前

    如何减少ASP.NET应用程序发送的HTML响应的大小?

    我使用的控件不是我所有的,它产生带有空格的输出。我对缩小页面的整个HTML输出很感兴趣,就像谷歌如何(查看源代码www.google.com)来改进时间安排一样。

    ASP.NET是否有可用的实用程序类可以为我做这些事情?

    6 回复  |  直到 10 年前
        1
  •  31
  •   thorn0    12 年前

    在运行时不需要这样做。因为它可以在编译时完成。

    细节: http://omari-o.blogspot.com/2009/09/aspnet-white-space-cleaning-with-no.html

        2
  •  19
  •   gius    11 年前
        3
  •  10
  •   Andrey Taritsyn    10 年前

    对于Microsoft.NET平台,有一个名为 WebMarkupMin 生成HTML代码的缩小。对于每个ASP.NET框架都有自己的模块:

    文档可在- http://webmarkupmin.codeplex.com/documentation

        4
  •  6
  •   Some dude    12 年前

    我想对Thorn的建议发表评论(但我对堆栈溢出并不熟悉)。

    1. 链接的代码(omari-o.blogspot.com)不支持MVC4,尽管该代码是开源的,但由于MVC3和MVC4之间的制动变化,它不容易升级。

    2. 运行时可能会有空白写入HTTP结果,只有实际站点的开发人员才能知道。因此,模板文件(aspx)的静态小型化根本就不是简单的。应该使用gius建议的动态缩小,以确保正确删除空白,不幸的是,这将导致运行时计算成本。中频码 动态地 将空间写入输出,必须将其删除 动态地 .

        5
  •  3
  •   Alex from Jitbit    10 年前

    接受的答案不适用于MVC4,因此这里有一个类似的lib,它在构建时缩小 https://github.com/jitbit/HtmlOptimizerMvc4

        6
  •  2
  •   Veverke    10 年前

    只是添加了另一个我在这里没有看到的选项,这是我被推荐使用的选项:

    Html minifier command line tool

    用途: here here

    有一个 问题 但是,使用此工具:它会留下单行(//)注释,并且会导致Razor解析问题,因为单行注释放置在C块中,如下所示:

    @{
      ... 
      ...
      // anything
      ...
    }
    

    将导致Razor解析器忽略从这一点开始的行的缩小输出其余部分,这将导致一个错误,说明在那里找不到块的结束“”。

    我解决这个问题的方法是 去除 这些注释来自输出。 这种方式 它起作用了。 为此,只需从第145行中删除regexoptions.singleline:

    htmlContents = Regex.Replace(htmlContents, @"//(.*?)\r?\n", ""/*, RegexOptions.Singleline*/);