【问题标题】:Large Pages on IIS + ASP.NET MVCIIS + ASP.NET MVC 上的大页面
【发布时间】:2013-08-21 11:07:41
【问题描述】:

我在使用 ASP.NET MVC + IIS 7.5 页面时遇到了一些问题。我有一个非常庞大的页面,有时会超过 15.0MB 未压缩和 1.5MB 压缩。

当它发生时,似乎连接永远不会结束。加载图标永远存在,如果我在开发者工具中看到,连接处于挂起状态,尽管已收到整个 HTML。

它发生在 Chrome、Firefox 和 Internet Explorer 上,所以我认为问题出在 ASP.NET 或 IIS 上。

我需要做一些特殊的事情来处理这样的页面吗?

【问题讨论】:

  • 15MB?!请问怎么做?
  • 你需要问问自己,我是否需要把 15MB 扔给用户。不能按需提供数据吗?
  • 其实不是。用户想查看所有发布的文件,所以我们有很多文件
  • 是否必须在一个请求和一个文件中?
  • 我不知道你期望这个答案是什么。你不能强迫 Niagara 通过软管掉下来。

标签: asp.net-mvc iis


【解决方案1】:

15MB 将非常缓慢且无响应 - 这不是您的用户想要的 - 无论他们多么想“查看所有已发布的文件”。

我会介绍,例如,分页进入您的网页,这样就不会一次下载所有文件。

但是,如果您真的想要一个 15MB 的页面,您可能会发现 limits config 可以提供帮助。

【讨论】:

    【解决方案2】:

    您说整个 HTML 已被证明已收到。那么 IIS 或 ASP.NET 怎么会成为问题呢?一旦内容被发送出去,它们就会脱离循环。

    可能是浏览器的问题。

    【讨论】:

    • 所以你是说Fiddler没有收到HTML? “尽管收到了整个 HTML”是什么意思?中断调试器以查看服务器“挂起”的位置(花费其 CPU 时间)。
    • 如果我打开查看源代码,我可以看到整个页面,包括结尾
    【解决方案3】:

    您可以尝试将Response.Buffer 设置为false

    Buffer 属性表示是否缓冲页面输出。当页面输出被缓冲时,服务器不会向客户端发送响应,直到当前页面上的所有服务器脚本都被处理完,或者直到调用了 Flush 或 End 方法。

    默认情况下,Response.Buffer 设置为true,因此输出将被缓冲。也许通过将响应提供给客户端,浏览器会按照您的需要行事。

    您确实需要设置Response.Buffer 的值任何输出发送到浏览器之前。

    【讨论】:

      【解决方案4】:

      也许试试 IIS 压缩?

      IIS provides the following compression options:
      
      Static files only
      
      Dynamic application responses only
      
      Both static files and dynamic application responses
      

      http://technet.microsoft.com/en-us/library/cc771003%28v=ws.10%29.aspx

      【讨论】:

      • 我正在压缩,压缩页面是1mb
      • 你能把示例页面贴在某个地方吗?
      猜你喜欢
      • 1970-01-01
      • 2012-02-15
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      • 2011-07-29
      • 1970-01-01
      相关资源
      最近更新 更多