2013-08-18 1 views
0

파일을 Content 폴더에 넣고 사용자가 파일을 다운로드 할 때와 파일을 보낼 때의 속도 차이에 놀랐습니다.반환 값을 사용하는 ASP.NET MVC 제공 파일 및 기본 내용

이 열려 섹션 내 전용 서버에서 100킬로바이트/s의에서이 결과 나는 "웹 ​​루트 \ 내용 \의 a.pdf"에서 같은 파일을 재생하고 다운로드 할 때, 열 수있는

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

10 섹션 및 속도는 1000KB/s입니다. 이것은 10 배 빠릅니다.

아무도 파일을 최대 속도로 사용자에게 보내는 방법을 나타낼 수 있습니까?

  1. 상술 한 루프를 사용하여 버퍼 및 부분 콘텐츠를
  2. FDM 요청 HTTP 헤더를 검출 Response.Write를 사용 (새 파일)
  3. (프리 :

    내가 좋아하는 다양한 방법을 시도 Download Manager) 소프트웨어는 기본적으로 3 섹션 만 열립니다. 그러나 다운로드 관리자는 구성 변경없이 10 개의 섹션을 열 수있는 "Content /"폴더를 통해 파일이 제공 될 때 이상하게 작동합니다.

+0

당신이 봤어 감사 : 잘 모르겠어요 http://stackoverflow.com/questions/5826649/returning-a-file-to-view-download-in-mvc이 있지만 스로틀 왜 ; 서버 측에서 처리가 진행 중입니까? –

+0

그 질문을 읽었습니다. 도움이되지 않습니다. 아무도 이것을 설명 할 수 있을지 궁금합니다. 지금까지 대답이 없습니까? 많은 웹 사이트가 리눅스를 통해 고속 다운로드를 제공하지만 Microsoft 제품은이 간단한 문제를 해결할 수 없습니까? 나는 정말로 대답 할 필사적이다. –

+0

: 사이트 경로 밖에있는 파일은 스로틀되고 있지만 내부의 파일은 아니지만 - 정확합니까? 그리고 서버에 [비트 쓰로틀 링] (http://www.iis.net/downloads/microsoft/bit-rate-throttling)이 없습니까? –

답변

-1

나는 마침내 해답을 발견,이는 나를 어떻게 Microsoft는 기본적으로 당신을 제한 서버의 잠재력을 극대화하는 방법을 보여 허용

ASP.NET

의이 processModel 관련이있다. 이 게시물의 비밀을 말하고 있기 때문에 관리 전용 서버로 업그레이드하거나 Microsoft 전문가를 고용하여 웹 서버를 고속으로 구성하려면 더 많은 돈을 지불 할 필요가 없습니다.

OPTIMIZE 서버 FILE 속도를 SENDING

  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.confi g
<configuration> 
    <system.web> 
    <applicationPool 
     maxConcurrentRequestsPerCPU="5000" 
     maxConcurrentThreadsPerCPU="0" 
     requestQueueLimit="5000" /> 
    </system.web> 
</configuration> 
IIS에서
  1. 구성, 최대 작업자 프로세스 : 20 (응용 프로그램 풀에서) C에서

  2. 구성은 Machine.config : \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ Config 및 C : \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config

    ProcessModel을 검색하고 MachineOnly를 다음으로 변경하십시오.

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

버전 = 4.0.0 MachineToApplication

.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 ="거짓 "/>

  1. 당신은 프로그램을 수행하는 것이 아니라 그 프로그램을 다시 시작해야합니다 IIS에서 전체 전력을하면 풀에서 내 사용자가 그의 ISP 패키지와 함께 얻을 수있는 최고 속도를 얻을 고속의 사용자 다운로드에 대한에 파일을 보내드립니다, 효과를

을 촬영합니다. 기본적으로 Microsoft는 서버가 인텔 아톰이라고 가정하기 때문에 서버의 잠재력을 제한합니다.