문제

동료 개발자는 최근 더 큰 ZIP 파일을 스트리밍하기 위해 IIS 6의 ASPBUFFERLIMIT가 기본값에서 약 200MB로 증가하도록 요청했습니다.

얼마 전에 클래식 ASP 세계를 떠난 후, 나는 당신이 왜 당신이 Binarywrite를 버퍼링하고 단순히 제안하는 것을 제안하는지에 대해 머리를 긁고있었습니다. Response.Buffer = false. 그러나 기본 크기를 50 배로 만들어야 할 경우가 있습니까?

분명히 메모리 소비가 가장 큰 걱정이 될 것입니다. 이 기본 설정을 변경하는 데 다른 우려가 있습니까?

도움이 되었습니까?

해결책

이와 같이 버퍼를 늘리는 것은 최고의 나쁜 생각입니다. 귀하는 사이트의 모든 방문자가 해당 양의 RAM까지 사용하도록 허용합니다. 당신의 경우 BinaryWrite/Response.Buffer=false 해결책은 그를 진정시키지 않으며, 그가 Response.Flush() 가끔. 버퍼 크기를 증가시키는 것보다 바람직합니다.

실제로, 당신이 아주 좋은 이유가 없다면, 당신은 이것을 ASP 프로세서를 통해 통과해서는 안됩니다. 그러한 것들을 위해 제쳐두고 디스크의 특별한 장소에 쓰고 대신 리디렉션하십시오.

다른 팁

버퍼를 끄는 단점 중 하나 (플러시를 사용할 수는 있지만이 시나리오에서 왜 그렇게하는지 알지 못합니다)는 클라이언트가 다운로드 시작시 콘텐츠 길이를 배우지 않는다는 것입니다. 따라서 다른 쪽 끝의 브라우저 대화 상자는 의미가 적으며 얼마나 많은 진전이 이루어 졌는지 알 수 없습니다.

더 나은 (IMO) 대안은 원하는 컨텐츠를 임시 파일에 (아마도 파일 이름에 Guid를 사용) 작성한 다음이 임시 파일을 가리키는 클라이언트에 리디렉션을 보내는 것입니다.

이 접근법이 더 나은 이유는 여러 가지가 있습니다.

  • 클라이언트는 저장 대화 상자 또는 데이터를 수신하는 응용 프로그램에서 좋은 진행 정보를 얻습니다.
  • 일부 응용 프로그램은 서버가 "정적"컨텐츠를 제공 할 때만 잘 작동하는 바이트 범위 페치를 잘 활용할 수 있습니다.
  • 임시 파일은 다른 클라이언트의 요청을 만족시키기 위해 재사용 할 수 있습니다.

그래도 많은 단점이 있습니다 :-

  • 파일 컨텐츠를 작성하는 데 언젠가는 시간이 걸리면 임시 파일에 쓰면 데이터를 수신하기 전에 약간의 대기 시간을 남기고 다운로드 시간이 증가 할 수 있습니다.
  • 임의의 Guid Filename을 사용하면 정적 파일이있는 콘텐츠에 강력한 보안이 필요한 경우
  • 오래된 임시 파일에 일부 하우스 키핑이 필요합니다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top