2009-08-06 3 views
1

제 질문은 미리보기 이미지와 저장 공간을 표시하는 것입니다.웹 사이트의 사용자 사진을 관리하는 가장 좋은 방법은 무엇입니까?

사용자가 사진을 업로드하고 앨범에서 볼 수있는 웹 사이트가 있다고 가정 해 보겠습니다.

사진은 일반적으로이 시나리오에 어떻게 저장됩니까? 이미지 그 자체입니까? 아니면 일반적으로 데이터베이스에 저장된 파일 경로입니까?

사진이 큰 당신은 썸네일을 표시 할 경우, 더 잘하는 것입니다 요청이있는 경우

  • 이미지의 사본 및 감소 된 크기의 이미지를 저장 만 크게 표시?
  • 크기를 줄이기 위해 HTML을 사용 하시겠습니까?
+0

저장 질문 확인 http://stackoverflow.com/questions/3748/storing-images-in-db-yea-or-nay 또한 이미지의 축소판 버전을 저장합니다. – Favio

답변

4

이미지를 데이터베이스에 저장하는 것은 거의 항상 좋은 생각입니다. BLOB는 실제로 데이터베이스를 매우 느리게 만들 수 있습니다. 또한 다른 드라이브에서 스토리지를 확산하는 기능도 제한됩니다. 파일이 분리되어 있으면 하나 이상의 별도 이미지 서버를 사용하여 주 동적 서버의 부하를 줄일 수 있습니다.내 권장 사항은 다음과 같습니다.

  • 데이터베이스 테이블에 이미지가있는 디렉토리와 이미지 이름 모두에 대한 열을 지정하십시오. 이렇게하면 이미지를 저장하는 위치를 자유롭게 변경할 수 있고, 드라이브를 라운드 로빈 (round-robin) 할 수 있으며, 나중에 더 많은 저장 공간을 추가하고 새 저장 장치에 새 이미지를 넣거나 원하는 것을 선택할 수 있습니다. 별도의 필드에 경로와 파일 이름을 저장하면 한 디렉토리에서 다른 디렉토리로 이미지를 이동하는 것이 쉽습니다.

  • 엄지 손톱 이미지를 생성하여 네트워크 대역폭을 줄이고 응용 프로그램을 더 빠르게 실행할 수 있습니다. 그러나 필요에 따라 축소판을 생성하거나 시스템로드가 낮을 때 축소판을 생성 할 수 있습니다. Linux를 사용 중이라면 ImageMagick은 자동 배치 이미지 크기 조정에 훌륭합니다. 절대 크기 대신 비율로 크기를 조정할 수도 있습니다.

+0

https://imageresizing.net 및 http://imageflow.io는 빠른 속도로 미리보기 이미지를 생성 할 수 있습니다 (단일 소스 이미징). 백엔드에서 네트워크 저장소 또는 모든 유형의 BLOB 저장소를 사용할 수 있습니다. –

0

TikiWiki와 같은 일부 소프트웨어는 사진을 데이터베이스에 저장합니다. 그런 다음 축소판 크기의 사진을 데이터베이스에 캐시합니다.

다른 소프트웨어는 디렉토리에 저장합니다. 이것은 갤러리 2가 작동하는 방식입니다. 나는 디렉토리 접근법이보다 확장 성이 있음을 발견했다. 원본과 다른 크기가 요청되면 일반적으로 응용 프로그램은 ImageMagick을 사용하여 사진의 크기를 조정 한 다음 크기가 조정 된 사진의 사본을 저장합니다.

또 다른 대안은 사진을 S3와 같은 서비스에 다시 업로드하고 사진을 전혀 저장하지 않는 것입니다.

0

이것은 일반적인 질문이며 기본적인 대답은 그것이 달려 있다는 것입니다. 더 많은 정보를 제공해야합니다. 어떤 데이터베이스를 사용할 계획입니까? SQL Server 2008에는 FILESTREAM 기능을 사용하여이 시나리오를 처리하기위한 몇 가지 새로운 기능이 있습니다. 일반적으로 데이터베이스에 넣는 것을 선호하지만 디자인 및 액세스 요구 사항에 대해 생각하지 않은 채로 넣으면 사진 수가 늘어남에 따라 성능이 저하 될 수 있습니다.

0

웹 서버가 이미지를 호스팅하는 파일 시스템에 항상 액세스 할 수 있는지 확실히 확인한 경우 해당 경로로 이동하십시오. 아마도.

그러나 웹 서버의 하드 드라이브 공간이 부족하거나 여러 웹 서버를 실행해야하기 때문에 언제든지 이미지 서버를 만들 필요가 있다고 생각하는 경우, 그런 다음 문제를 해결하고 데이터베이스에 저장하십시오. 파일 시스템에 저장하는 것이 어려운 부분은 네트워크를 가로 지르는 보안 요구 사항입니다.

또한 모든 데이터베이스 서버가 동등하게 만들어지는 것은 아닙니다. SQL 2008에는 실제로 로컬 파일 시스템에 이미지를 저장하는 FILESTREAM 데이터 형식이 있지만 db 서버를 통해 모든 읽기/쓰기 액세스가 허용됩니다. 이렇게하면 저장소에있는 동안 들어오는 파일에 대해 바이러스 검색 프로그램을 실행할 수 있다는 이점이 있습니다.

오라클에는 잠시 동안 멋진 파일 저장 기능이 있습니다. MySQL은? 나는 시도하고 싶지 않다고 생각하지만 괜찮을지도 모른다.

두 번째 질문에 대해서는 이미지와 함께 축소판을 저장하십시오. 이 프로세스는 이미지 당 한 번만 발생하며 프레젠테이션 대역폭을 절약합니다. 이미지 크기를 줄이기 위해 HTML을 사용하는 것은 클라이언트에게는 아무런 효과가 없습니다.

관련 문제