Rails 앱을 사용하여 Heroku의 Cedar 스택 (즉, CDN이 아닌)을 통해 자산을 직접 제공 할 때 gzip으로 자동으로 처리됩니다. (previous question에 대한 이유는 여기에 나와 있습니다.Heroku Cedar에서 Rails 3.0.x의 Cloudfront 서비스 자산에 대한 Accept-Encoding 헤더
이제 이러한 자산을 제공하기 위해 Cloudfront를 설정하려고합니다. 이상적으로는 gzip으로 지정하는 것이 좋습니다. 내가 읽은 것부터 Cloudfront가 내 앱에 Accept
헤더를 전달할 것이라고 생각 했으므로 지원되는 경우 gzip으로 제공되어야합니다 (귀하가 영웅에 대한 자산을 직접 요청할 때와 마찬가지로). 그러나 이것은 사실이 아닙니다. 인코딩에 대한 언급은 여기에 없다
Age:510
Connection:keep-alive
Content-Length:178045
Content-Type:text/css
Date:Sun, 08 Jan 2012 18:55:13 GMT
Last-Modified:Sun, 08 Jan 2012 18:42:34 GMT
Server:nginx/0.7.67
Via:1.1 varnish, 1.0 7a0b4b3db0cc0d369fe1d6981bfb646a.cloudfront.net:11180 (CloudFront), 1.0 6af08f4042ec142b4b760ca4cd62041d.cloudfront.net:11180 (CloudFront)
X-Amz-Cf-Id:2b205edf4e9ef000a31a0208ca68f4e15b746eb430cde2ba5cc4b7dff4ba41a76c24f43cf498be02,8d5863a42eea452f86831a02f3eb648b26fe07013b08b95950f15ef8ba275822e1eb3b7ed2550d01
X-Cache:Hit from cloudfront
X-Varnish:2130919357
, 나는 일반 파일을 볼 때, 그것은 gzip으로 압축 아니에요 : 자산 헤더는 다음과 같이 찾고 끝. 그래서 Cloudfront가 내 앱에서 gzip 된 버전의 애셋을 요청하여 클라이언트에게 제공 할 수있게하려면 여기에서해야 할 일이 궁금합니다.
This post은 수동으로 파일을 gzip하고 업로드해야한다고 말합니다. 그러나 필자는 그 파일이 왜 필요한지 알지 못합니다. 하나는 짜증나기도하고 둘은 브라우저에 직접 파일을 요청하지 않겠습니까? 그렇다면 왜 내 응용 프로그램에서 기본적으로 gzip 파일을 제공하지 않을까요?
gzip'ng을 제대로 작동시키는 데 필요한 정보는 훌륭합니다. 내 파일을 수동으로 gzip하고 가능한 경우 업로드하지 않아도됩니다.
문서가 제안한대로 herokuapp.com을 CNAME-ing하는 대신 heroku.com을 가리키는 A 레코드가 있음이 드러났습니다. 이 경우 실제로는 Varnish를 통해 내 요청을 필터링하고있었습니다. 그리고 모든 것을 다 열심히하고있었습니다. 나는 지금 그것을 바 꾸었고 레일스 3.1으로 업그레이드 할 때까지'Rack :: Deflater'를 사용할 것입니다. (분명히 제 첫번째 선택이지만, 아마도 ATM은 아닙니다) – brad
슈퍼, 도움이되기를 기뻐합니다. - 내 대답에 똑같이 대답 해주세요;) –
참고 당신이 언급 한 그 기사에서 아무 것도 정말로 필요하다고 생각하지 않습니다. Cloudfront는 Accept-Encoding 헤더를 통과 한 파일을 가져온 다음 CDN에 캐시합니다. 내 애셋을 수동으로 동기화하는 이유가 표시되지 않습니다. 첫 번째 요청은 예, 느릴 수 있지만 이후 요청은 CDN에서 빠르며 제공됩니다. Thx 다시 팁. – brad