2009-12-17 5 views
1

질문을 올리는데 좋지가 않아서 더 이해하기 쉽도록이 단어를 다시 말하면/retag. 감사.이미지 프록시 성능

이미지 프록시 페이지에서 사용자 지정 조작 값을 사용하여 제품 이미지에 대한 모든 요청을 처리 할 수 ​​있습니다. 예를 들어 :

http://mysite.com/ImageProxy.aspx?id={ITEM ID}&width={WIDTH}&height={HEIGHT}&gloss={GLOSS}&reflection={REFLECTION} 

서버 측의 부하를 줄이기 위해, 나는 같은 조작 값으로 같은 제품이 호출 될 때 재사용을 위해 이미 생성 된 이미지의 파일을 저장하여 캐시합니다.

처음에는 작동하지만 한 페이지에 더 많은 이미지가 표시되면 속도가 느려집니다. 이 상황을 개선 할 수있는 방법을 알고 싶습니다, 또는 이미지 프록시가 자연스럽게 느려지는 경향이 있습니까?

은 편집 * : *

내가 :

  • ASP.NET MVC
  • 이미지를 조작 할 수 System.Drawing.Drawing2D, System.Drawing.Imaging을 사용하여 개발하고 있습니다.
  • 현재 페이지는 페이지 당 8-10 개의 이미지와 각 이미지의 30-50kb (PNG)로 크기가 약 500kb * (결과 페이지의)입니다.
  • 이미지는 현재 투명도가 반영된 PNG이며 옵션으로 둥근 모서리 효과가 있고 이미지는 다양한 단색 배경 색상 (예 :/GIF는 옵션 일 수 있음)에있을 수 있습니다.
+0

중요한 코드 섹션을 게시 한 경우 도움이됩니다. 또한,이 이미지들은 얼마나 큰가? 그들은 데이터베이스에서 왔습니까? –

+0

그리고 "비용 ~ 500kb"는 결과 페이지의 총 크기가 500kb임을 의미합니까? 또는 각 페이지가 렌더링 될 때 서버의 메모리 사용량이 500kb까지 증가합니까? –

+0

@Mike, ImageProxy.aspx 페이지는 팀이 작성한 사용자 지정 라이브러리 인 웹 서비스 ('ImageBuilder')를 사용하며 예를 들어 스 니펫을 쉽게 가져올 수 없습니다. "~ 500kb의 비용"은 결과 페이지의 전체 크기를 의미했습니다. 서버 메모리 사용량을 모니터링하지 않았습니다. –

답변

3

이 시도 :

// GetCacheFileName -> Returns the full path of the "cached" image 
    // CreateImage -> Used to create a new image if necessary 
    string cacheFile = GetCacheFileName(param1, param2, param3, param4); 
    if (!File.Exists(cacheFile)) 
    { 
     Image cacheImage = CreateImage(param1, param2, param3, param4); 
     cacheImage.Save(cacheFile, ImageFormat.Jpeg); 
    } 

    Response.ContentType = "image/jpeg"; 
    Response.TransmitFile(cacheFile); 

두 가지를 여기에 통지됩니다

  • 디스크에 JPEG로
  • 파일을 저장 이미지를 저장하고 응답을 사용하는 프레임 워크에게 Response.WriteFile 또는 Response.OutputStream.Write 대신 .TransmitFile
+0

은 투명도와 불투명도의 필요성 때문에 항상 PNG입니다 (원래 파일은 JPG 임에도 불구하고). 또한'Response.OutputStream.Write' 대신'Response.TransmitFile'을 사용할 이유를 정교하게 할 수 있습니까? 감사. –

+0

문제의 하나가 페이지의 전체 크기이기 때문에 파일 크기를 최소화하기 위해 JPEG를 제안했습니다. 적절한 콘텐츠 유형을 사용하는 한 PNG와 함께 사용할 수 있습니다. 그리고 Response.TransmitFile을 사용하면 클라이언트로 전송하기 전에 전체 파일을 메모리에로드하지 않아도되므로 더 빠르고 리소스 집약적입니다. – Badaro