2

내 웹 사이트는 많은 이미지를 사용합니다. 약한 날에 사용자는 수백 개의 새 이미지를 업로드합니다. 나는 이미지의 크기를 조작하기위한 최선의 방법이 무엇인지 알아 내려하고있다.서버로 업로드하거나 서버에서 클라이언트로 제공 할 때 이미지 크기를 조정 하시겠습니까?

이 프로젝트는 이미지 조작을 위해 gm 모듈과 함께 Node.js를 사용하지만이 질문은 노드 또는 GM과 관련이 없다고 생각합니다.

나는 몇 가지 전략을 생각해 냈지만, 어떤 것이 최선인지에 대한 결정을 내릴 수는 없으며 확실한 모범 사례 전략을 놓치고 있는지 확실하지 않습니다.

여러분의 생각과 경험을 통해 저에게 계몽 해주십시오.

옵션 1 : 모든 클라이언트 요청시 gm으로 파일의 크기를 조정하십시오.

옵션 1 프로 : 나는이 파일을 제공 할 때마다 GM의 기능을 실행하면

  1. , 내가 필요할 때마다의 크기, 품질, 압축, 필터 등을 제어 할 수 있습니다.

  2. 서버에서 전체 파일 크기는 1로 저장하고 저장 공간을 절약합니다.

옵션 1 단점 :

  1. GM은 많은 자원, 그리고 그게 내가 모든 단일 클라이언트에 모든 단일 이미지 서버에 대한 내 RAM을 남용되는 것을 의미합니다.

  2. 이것은 내가 항상 큰 파일에서 작업한다는 것을 의미하며, 이는 상황을 더 악화시킵니다.

  3. 나는 내 스토리지 (내 경우 S3)에서 서버로 파일을 가져 와서 조작 한 다음 제공해야합니다. 중복 대역폭 문제가 발생하는 것 같습니다.

옵션 2 : 먼저 업로드에있는 파일의 크기를 조정하고 서버에있는 파일의 여러 크기를 유지한다.

옵션 2 프로 :

  1. 난 단지 업로드에 GM을 사용해야합니다.

  2. 파일을 검색하는 데 리소스가 거의 필요하지 않습니다.

옵션 2 단점 : 나는 같은 파일의 여러 버전을 절약 할 수 있기 때문에 내가 더 많은 스토리지를 사용

  1. (즉, 전체, 대형, 중형, 소형, X-작은) 단 하나의 버전 대신에.

  2. 사용자가 이미지를 업로드 할 때 생성 된 크기 만 사용하도록 제한됩니다.

  3. 유연하지 않음 - 나중에 추가 버전 (예 : x-x-small)이 필요한 경우 스토리지의 모든 이미지를 처리하여 새 버전의 이미지를 만드는 스크립트를 실행해야합니다.

옵션 3 : 내 저장 장치에 저장된 버전이없는 파일 크기를 제공하는 경우 업로드에 파일 만 처리에 사용 옵션이 있지만, 크기 조절 모듈을 유지합니다.

옵션 3 장점 :

  1. 내가 설정 한 크기의 선택에 파일을 제공 할 때 크게 리소스 사용을 줄일 수있을 것입니다.

옵션 3 단점 : 여전히 옵션 난 아직도 내가 그들을 서비스를 제공 할 때 파일을 처리해야합니다 1.

  • 대 옵션 2로 더 많은 스토리지를 취할 것

    1. 내가 원하는 파일 크기가없는 경우

    옵션 4 : 업로드 할 때 여러 버전의 파일을 만들지 않습니다. 이미지 크기를 요청할 때 BUT 이미지를 제공 할 때 이미지의 크기를 조정하면 파일의이 버전이 저장 장치에 저장되고 이후 요청을 위해 이미지를 다시 처리 할 필요가 없습니다.

    옵션 4 장점 :

    1. 난 단지 내가 사용하는 버전의 스토리지를 사용합니다.

    2. 필자는 필요할 때마다 새로운 파일 크기를 추가 할 수 있으며 필요에 따라 파일 크기가 자동으로 생성됩니다. 스토리지 집약적 인 집약적 모두 자원이 될 것입니다

      1. 파일을 한 번만 액세스 할 수 있습니다 :

      2. 는 옵션

      파일 당 한 번만 4 단점 많은 자원을 사용합니다 . 파일에 액세스 할 것이므로 필요한 크기 버전이 존재하지 않으며, 새 파일 버전을 만들고, 필요한 리소스를 사용하고, 한 번만 사용되는 파일의 저장 공간을 낭비하는 저장소에 저장하십시오 (). 참고, 파일을 몇 번이나 사용할 지 알 수 없음)

      1. 모든 요청에 ​​대해 파일이 이미 있는지 확인해야합니다.

    그래서,

    1. 를 선택할 것인가? 왜?

    2. 내가 제안한 방법보다 효과적인 방법이 있습니까?

  • 답변

    0

    해결 방법은 리소스 사용에 따라 크게 달라질 수 있습니다. 집중적으로 활용한다면 옵션 2가 훨씬 좋습니다. 그렇지 않으면 옵션 1도 잘 작동 할 수 있습니다.

    질적 인면에서 옵션 4가 최선이라고 생각합니다. 그러나 단순성과 자동화에 대한 질문에 대해서는 옵션 2가 더 나은 방법이라고 생각합니다.

    간명이 중요하기 때문에 옵션 2와 4를 섞어서 제안합니다. 크기 목록 (예 : 대형, 중형, 소형)은 업로드되지만 옵션 4와 같이 요청할 때는 처리하지 않습니다.

    결국 최악의 경우 옵션 2 솔루션에 도달하게됩니다.

    웹 사이트의 <img> 및/또는 <canvas> 개체를 사용하여 최종 크기 조정을 수행하면 서버 측에서 작은 계산 오버 헤드가 발생하지 않습니다.

    +0

    나는 당신의 생각을 좋아합니다. –