2012-04-09 5 views
2

그럼, 더 잘 설명해 드리겠습니다. 제목에별로 언급하지 않는다고 확신합니다.jquery ajax를 통해 이미지 업로드 및로드

저는 회사 시스템에서 몇 가지 개선 작업을 담당하고 있습니다. 이제 시스템은 현재 이미지를 파일로 저장하고 이미지 경로를 데이터베이스에 삽입합니다.

그렇다면 문제가 무엇인가요? 글쎄, 서버가 항상 많은 이미지를 삽입하게되면, 서버는 약간의 개선이 필요할 것입니다. 그래서 첫 번째 생각은 이미지 데이터를 데이터베이스에 저장하고 아약스 호출을 통해로드하는 것입니다. 그게 좋은, 그것은 이미지에서 기가 바이트의 많은 서버가 오버로드되지 않습니다 중복 등 문제가되지 않습니다,하지만 내가 jQuery에서 아약스 메서드를 호출하면 서버 측에 보낸 데이터는 쿼리 문자열을 통해입니다 데이터가 6000 자보다 높으면 Base64 인코딩을 사용할 때와 마찬가지로 대부분이 메서드를 호출 할 수 없습니다.

다른 생각은 서버 측에 이미지를 보내고 데이터베이스에 저장할 데이터를 생성하고 사용자가 이미지를보고 싶을 때 서버가 데이터를 이미지로 변환하고 클라이언트로 보냅니다. 측면. 그러나 문제는이 시스템에 많은 사용자가 있고 이미지를 많이 보내거나 받는다는 것은 많은 양의 요청으로 인해 서버가 메모리 문제를 일으킬 수 있다는 것입니다.

짧은 이야기를하기 위해 클라이언트에서 서버로 이미지를 보내거나받는 가장 좋은 방법은 무엇이며 서버 용량에 과부하가 걸리지 않도록하는 것이 가장 좋습니다.

P .: 긴 게시글에 대해 사과드립니다. 나는 명확한 질문을하고 싶었습니다.

미리 감사드립니다.

+4

데이터베이스의 이미지는 거의 항상 나쁜 아이디어이며, 모든 것을 base64로 보내면 대역폭 청구서 ~ 33 %. 이미지를 파일 시스템에 저장하고 이미지의 PATH를 데이터베이스에 저장하면 표준 ''태그로 쉽게로드 할 수 있습니다. –

+0

우선, 빠른 답변에 감사 드리며 둘째, 하드 드라이브의 공간을 줄이기 위해 서버 측을 절약 할 때 이미지를 압축 할 가치가 있다고 생각합니까? 24/7 시스템으로 서버/클라이언트간에 끊임없이 이미지를 교환하므로 서버에 과부하가 걸립니다. –

+1

@MarcB : 이미지를 웹 응용 프로그램의 실제 폴더에 직접 저장해서는 안된다는 점도 중요합니다.오히려 별도의 공유에 저장하고 별도의 서버에서 처리 할 수있는 URL 외관을 통해 노출합니다. 제대로 수행되면 보안 및 성능이 향상됩니다. –

답변

1

서버가 이미지를 DB에 더 많이 저장하면 오버로드됩니다. 대부분의 웹 서버는 이미지와 같은 정적 파일을 매우 효율적으로 제공합니다.

당신은 그것을 해결하기 전에이 문제에 대한 자세한 내용을 생각해야 :

문제 대역폭 과부하가
  • 인가? 업로드하기 전에 이미지 클라이언트 측 크기를 조정하십시오 (PlUpload와 같은 도구를 사용할 수 있음). 할 수 없다면 최소한 서버 측의 크기를 조정하여 크기를 줄이고 다운로드 대역폭을 절약하십시오.

  • 하드 드라이브 공간에 과부하가 있습니까? 다시, 이미지 클라이언트의 서버 측 크기를 조정하십시오.

  • CPU에 과부하가 있습니까? 스파이크의 원인 인 루트 코드를 확인하십시오. 많은 요청으로 높은 CPU가 발생할 것이므로 더 단단한 서버 (또는 다른 웹 서버)가 필요할 수도 있습니다.

+0

글쎄, 내 문제는 서버와 클라이언트 사이의 이미지 트래픽이 많이 있습니다. 이미지를 업로드하면 웹 서버를 사용하여 이미지를 폴더에 저장하고 데이터베이스에 경로를 삽입합니다. 따라서 사용자가 이미지를 요청할 때마다 데이터베이스에서 경로를로드 한 다음 폴더에서 올바른 이미지를 가져 와서 클라이언트에 보냅니다. 그러나 10 분 동안 500 명의 고객이 몇 가지 공황 때문에 계속해서 같은 요청을 반복한다고 상상해보십시오. 데이터베이스 요청에 과부하가 걸리고 서버에 이미지 트래픽이 오버로드됩니다. 그래서 클라이언트 측 렌더링을 고려하고있었습니다. –

+0

내 의견을 마무리 할 수 ​​없어서 답변을 주셔서 감사합니다. 웹 서버를 사용하여 이미지를 관리하고 데이터베이스에 경로를 삽입합니다. 클라이언트가 많은 렌더링 등으로 고통받는 것보다 그를 위해 빠른 웹 사이트를 갖는 것이 클라이언트에게 더 유용합니다. 고마워, 너는 내 마음을 열었다. 그리고 유감스럽게도 유권자에게 투표하지 말고, 나는 아직도 평판이 충분하지 않습니다. –

+0

캐싱을 사용하여 DB를 너무 세게 치지 않도록 할 수 있습니다. 요청에 관해서는 CDN을 사용할 수 있지만 과잉이라고 할 수 있습니다. –

관련 문제