2012-09-13 5 views
1

각 dyno에 emepheral 파일 시스템이 있기 때문에 heroku에서 페이지 캐싱이 좋은 옵션이 아니라는 것을 이해합니다. 따라서 파일을 공유하지 않으므로 다시 시작할 때마다 파일이 지워집니다.Heroku에서 페이지 캐싱에 대한 좋은 대안은 무엇입니까?

그래서 나는 최고의 대안이 무엇인지 궁금합니다. 전통적인 페이지 캐싱 시나리오 (예 : 10GB - 100GB)에서 생성 될 수있는 잠재적 인 파일이 너무 많아 redis/memcached가 좋은 옵션처럼 보이지 않습니다. Redis는 디스크에 쓸 수 있지만, 일단 메모리 용량을 초과하면 디스크 읽기를 시작하는 것이 올바른 해결책이 아닙니다.

누구나 좋은 해결책을 찾았습니까? 아마 MongoStore를 생각하고있어. (그리고 다른 시나리오에서는 redis를 사용하기 때문에 redis와 함께이 방법을 사용하는 방법도 있습니다.) 감사합니다!

+0

이 질문은 다음과 같이 보입니다 : http://stackoverflow.com/questions/11019032/heroku-cedar-pure-rack-static-site – maletor

+0

흠, 관련이 있지만 실제로 내 질문에 대답하지 않습니다. 페이지 캐싱을 10-100GB 수행하는 방법. 좋은 해결책이 없을 지 모르지만 여전히 호기심이 많습니다. –

+0

Rack :: Static을 사용하면 사이트에서 정적 콘텐츠와 동적 콘텐츠를 모두 제공 할 수 있습니다. – maletor

답변

2

사이트가 100 % 정적 콘텐츠이고 동적 인 사이트가 아닌 경우 S3가 좋은 옵션 일 수 있습니다. 그런 다음 s3 도메인에 대한 CNAME을 만들 수 있습니다. 이렇게하면 필요한 경우 CloudFront를 활용할 수 있습니다. 그렇지 않으면 100GB가 데이터베이스에 들어가야하며, 데이터베이스는 응용 프로그램에 의해 풀업됩니다.

Heroku의 삼나무 스택은 custom buildpacks을 허용합니다. This one nginx 공급 업체. 보다 역동적 인 사이트로 전환하려는 경우이 방법이 유용 할 것입니다.

+0

이것은 좋은 지적입니다. S3에서 로딩이 잘 작동 할 것입니다. 그 생각을하지 않았다. nginx buildpack을 사용하면 컴파일 된 슬러그 (heroku term)에 모든 데이터가 포함되어야합니까? 나는 컴파일 된 슬러그에 100MB의 하드 한계가 있다고 생각한다. 이 답변을 주셔서 감사합니다. –

+0

아니요. 데이터를 데이터베이스에 보관하고 InnoDB에서 memcached로, 마지막으로 브라우저 캐시로 쿼리 캐시까지 다양한 수준의 캐시를 데우십시오. – maletor

+0

소규모에서는 S3/CF가 좋습니다. 대규모로는 훨씬 저렴한 CDN이 있으며 핫 스폿에서 DIY 에지 CDN을 실행하는 것이 비용 효율적입니다. – Barry

관련 문제