2010-01-14 5 views
2

디스크에서 파일을 읽는 이미지 갤러리를 빌드하고 즉시 섬네일을 만들고이를 사용자에게 제공하십시오. 이것은 약간의 시간이 걸린다는 점을 제외하고는 잘 작동합니다..NET 응용 프로그램 캐시와 데이터베이스 캐시

그런 다음 ASP .NET 응용 프로그램 캐시를 사용하여 처리 된 이미지를 캐시하기로 결정했습니다. 이미지가 처리 될 때 byte [] 스트림을 캐시에 추가합니다. 제가 아는 한, 이것은 시스템 메모리에 저장되어있는 beeing입니다. 그리고 이것은 완벽하게 작동합니다. 페이지로드는 훨씬 빠릅니다.

제 질문은 응용 프로그램 캐시에 캐시 된 이미지가 수천 개 있다면 어떤 방식 으로든 서버 성능에 영향을 미칩니 까?

이미지 캐싱을위한 다른 방법이 있습니까?

+2

질문의 데이터베이스 캐시 부분은 무엇입니까? –

+0

응용 프로그램 캐시 대신 데이터베이스에 저장하는 것이 더 효율적일 수 있습니다. 믹스에 추가하고 싶었던 생각. – Martin

답변

5

기본적으로 응용 프로그램 캐시는 서버 메모리에 데이터를 저장합니다. 웹 사이트 탐색 패턴에 따라 캐시 히트가 너무 많지 않을 수도 있습니다.

모든 이미지를 미리 처리하여 축소판을 한 번에 생성하고 원본 이미지와 함께 저장할 수 있습니다. 이렇게하면 캐시 계층을 처리 할 필요가 없으며 디스크 공간을 너무 많이 차지하지 않습니다.

+0

나는 이것이 실제적인 대답이 아니라 주석이어야한다고 생각한다. – Tobias

+0

확실히 이미지가로드 될 때 축소 이미지를 만듭니다. 이것은 지속적으로 축소판을 만드는 것보다 훨씬 덜 집중적이며 최적화 된 경우 엄청난 양의 공간을 사용하지 않습니다. – cjk

+0

+1을 누르면 미리보기 이미지가 생성됩니다. 디스크 공간은 상대적으로 저렴하며 섬네일의 성격 상 작습니다. @ 토비아스 - 왜? 그것은 좋은 대답입니다! – AdaTheDev

1

얼마나 많은 이미지와 서버의 메모리에 따라 달라집니다. 필자가 선호하는 것은 섬네일을 디스크에 쓰고 메모리 캐시에 넣지 않는 것입니다. 아마 당신은 습격이 가능한 디스크에서 사이트를 돌릴 것이므로 읽기 속도는 빨라질 것이며 IIS는 디스크 읽기에 최적화됩니다.

0

예, 캐시에 너무 많은 내용을 넣어 웹 서버 성능에 영향을 미칠 수 있습니다.

캐시가 ASP.Net에 추가 된 이유 중 하나는 서버 메모리가 최대화되기 시작하면 캐시에서 가장 오래된/최소 사용 항목을 지우는 기능을 추가하는 것이 었습니다. Application 개체에 항목을 캐시하면 정리가 수행되지 않고 결국 서버에서 메모리가 부족해질 수 있습니다. Cache 객체를 사용하면이를 피할 수 있습니다.

캐시 개체를 사용하면 만료에 대한 다양한 규칙을 설정할 수 있습니다. 따라서 예를 들어, 이미지가 캐시에 보관되는 기간에 대한 시간 제한을 설정할 수 있습니다.

관련 문제