0

将文件放入 Content 文件夹并让用户下载它与发送文件时的速度差异让我感到惊讶。

这导致我的专用服务器中的 100KB/s 有 2 个开放部分

public FilePathResult GetFile()
{
return File("c:\\a.pdf", "application/octet-stream");
}

当我在“WebRoot\Content\a.pdf”中播放同一个文件并下载它时,它能够打开10个部分,速度为1000KB/s。这快了 10 倍。

谁能指出如何以最大速度向用户发送文件?

我尝试了各种方法,例如:

  1. 上一个(返回文件)
  2. 使用 Response.Write 使用循环和缓冲区并检测请求部分内容的 HTTP 标头
  3. 默认情况下,FDM(免费下载管理器)软件也仅打开 3 个部分。但是,当文件通过“Content/”文件夹提供文件时,下载管理器的行为很奇怪,该文件夹能够打开 10 个部分而无需更改配置。
4

1 回答 1

-1

终于找到答案了,这和ASP.NET的ProcessModel有关

请允许我向您展示如何最大限度地发挥 Microsoft 默认限制您的服务器的潜力。您无需支付更多费用即可升级到托管专用服务器或聘请微软专业人士来配置您的高速网络服务器,因为我在这篇文章中告诉您秘密。

优化您的服务器发送文件速度

  1. 优化工作线程、应用程序 Web.config
   <system.web>
   <processModel maxWorkerThreads="1000" maxIoThreads="1000" minWorkerThreads="10" minIoThreads="10"/>
   </system.web>
  1. 设置 C:\Windows\Microsoft.NET\Framework 和 C:\Windows\Microsoft.NET\Framework64 文件 ASPNet.config
<configuration>
    <system.web>
    <applicationPool 
        maxConcurrentRequestsPerCPU="5000"
        maxConcurrentThreadsPerCPU="0" 
        requestQueueLimit="5000" />
    </system.web>  
</configuration>
  1. 在 IIS 中配置,最大工作进程:20(在应用程序池中)

  2. 在 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config 和 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config 中配置 Machine.config

    搜索 ProcessModel,并将 MachineOnly 更改为 MachineToApplication

<section name="processModel" type="System.Web.Configuration.ProcessModelSection, System.Web,

版本=4.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineOnly" allowLocation="false" />

to
<section name="processModel" type="System.Web.Configuration.ProcessModelSection, System.Web,

版本=4.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication" allowLocation="false" />

  1. 必须重启应用程序池才能生效

一旦 IIS充满电,它就会将文件发送给用户以高速下载,我的用户可以通过他的 ISP 包获得最高速度。默认情况下,Microsoft 会限制您的服务器的潜力,因为他们假设您的服务器是 intel atom。

谢谢

于 2013-08-21T07:37:27.870 回答