나는 당신이 원하는 것에 대한 완벽한 대답은 없다고 생각합니다. 임의의 아이디어/장단점 :
1) HTTPS로 전환합니다. 그렇게하면 URL을 스니핑하는 사람들을 무시할 수 있습니다. 그러나 HTTPS 항목은 브라우저에서 매우 오랫동안 캐시 될 수 없습니다.
2) 서명 된 URL을 제공하는 경우 expires = "time + 10m"을 설정하지 말고 "time + 20m and nearest nearest 10m"으로 설정하십시오. 이렇게하면 URL은 적어도 10m 이상 일정하며 브라우저는이를 캐시 할 수 있습니다. S3의 파일에 expires : 헤더를 설정하여 브라우저가 캐시 할 수 있음을 알 수 있도록하십시오.
3) 모든 URL을 프록시 할 수 있습니다. 브라우저가 서버의 사진을 요청하도록 요청한 다음 웹 프록시를 작성하여 S3의 사진에 요청을 프록시합니다. 이 과정에서 사용자 인증을 확인하고 S3의 서명 된 URL을 생성하고 로컬에서 사진을 캐시 할 수도 있습니다.이 방법은 사용자에게 "덜 효율적"으로 보이지만 브라우저에서 URL을 원하는만큼 캐시 할 수 있습니다. 또한 사진 URL을 북마크에 추가 할 수 있으므로 사용자에게 편리합니다. 다른 컴퓨터로 옮겨도 서버가 방문하여 사진을 표시하기 전에 로그인하도록 요청할 수 있습니다.
Python Twisted 또는 Node.js와 같은 "이벤트가 발생한"서버를 사용해야합니다. 그렇게하면 서버에서 많은 메모리/CPU를 사용하지 않고 동시에 수천 장의 사진을 프록시 처리 할 수 있습니다. (모든 데이터가 서버를 통과하므로 많은 대역폭을 사용하지만 여러 서버를 실행하여 쉽게 "수평 확장"할 수 있습니다.) 4) Cloudfront는 캐시입니다. CF 서버에서 자원을 처음 요청할 때 속도가 느려집니다 (몇 백 밀리 초). 그러나 두 번째 요청이 캐시 될 것으로 예상하지 마십시오! 각 CF 위치에는 ~ 20 개의 서로 다른 서버가 있으며 매번 무작위로 공격합니다. 따라서 사진을 10 번 요청하면 10 회의 캐시 미스가 생성 될 수 있으며 다음 요청시 캐시 히트 가능성은 50 %입니다. CF는 수백 번 요청 될 인기있는 콘텐츠에만 유용합니다. CF는 사설 CF-to-S3 연결이 일반적인 인터넷보다 좋을 수 있기 때문에 외국 사용자에게 다소 유용합니다.
CF가 보안 검사를 수행하는 방법을 정확히 모르겠습니다. 그러나 S3 인증을 통과하면 (기본값이 아님) 10 분 동안 캐시 될 수있는 URL을 만들기 위해 "mod 10 minutes"트릭을 사용할 수 있습니다.
CF가 "브라우저 캐시보다 빠릅니다"는 것은 불가능합니다. 그러나 브라우저 캐시를 사용하지 않는 경우 CF는 S3보다 빠르지 만 대부분 외국 위치에있을 수 있습니다.
할 어떤 다른 사람들을 살펴보십시오 (즉, 스 머그 머그 (SmugMug) 내가 생각 S3를 사용합니다.) [특급/nodejs 응용 프로그램에 S3에 저장된 게재 파일]의
가능한 중복 (https://stackoverflow.com/questions/17516820/serve-files-in-s3-in-express-nodejs-app) –