2009-11-22 2 views
13

저는 레일 초보자입니다. 저는 heroku의 stylesheets_link_tag에서 무슨 일이 일어나는지 알아 내려고 노력했습니다.heroku의 레일 앱이 all.css 및 개별 파일을 통해 로컬로 자산을 제공하는 이유

나는

= stylesheet_link_tag "style", :cache => true 

에게 Heroku는 "all.css"를 사용하여 스타일 시트를 선택하지 않는,하지만 난

= stylesheet_link_tag "style", :cache => false 

를 사용하는 경우는 그 이름 "스타일을 사용하여 스타일 시트를 제공 사용하는 경우. css ". 왜?

답변

17

스타일 시트 링크 태그에서 cache => true를 호출 한 결과입니다.

: cache => true는 제공된 모든 스타일 시트를 가져와 all.css라는 하나의 파일로 연결합니다.

Heroku 배포시에만 표시되는 이유는 레일스 응용 프로그램이 프로덕션 모드에서 실행 중일 때만 연결된 all.css를 호출하기 때문입니다. (

= stylesheet_link_tag "application", "jquery-ui", "style", :cache => true 

개발이,이, application.css JQuery와 - ui.css하고있는 style.css이 포함됩니다 :

그래서 예를 들어이 전 세 가지 스타일을 가지고 내 헤더에 포함 가정 해 봅시다 그와 같은 순서로).

프로덕션 환경에서는 제공되는 순서대로 3 개의 파일에있는 모든 CSS를 "all.css"라는 단일 파일로 연결합니다.이 파일은 포함 된 유일한 CSS 파일입니다.

프로덕션 환경에서 HTTP 요청이 적어지고 CSS가 포함 된 파일 크기가 적어 페이지로드가 빨라지므로 이점이 있습니다.

편집 캐스퍼가 의견에서 지적한대로 Heroku는 읽기 전용 파일 시스템을 가지고 있습니다. Heroku 고유 솔루션에 대해서는 Heroku Asset Packager을 참조하십시오.

+1

감사 (production.rb하는 경우는 true config.serve_static_assets을 = 추가)? –

+4

Heroku는 읽기 전용 전개 환경입니다. 그렇기 때문에 Rails는 all.css를/public/stylesheets /에 쓸 수 없으며 자동으로 실패합니다. Stylheet_link_tag는 여전히 cache => true를 사용하는 한 all.css에 연결되므로 빠른 수정은 Heroku에서 스타일 시트를 캐시하지 않습니다. 자세히 알아보기 : http://docs.heroku.com/constraints#read-only-filesystem –

+0

감사합니다 Casper and Bryan –

0

설정 : cache => true로 설정하면 내 요청이 완전히 실패합니다. 짧은 기간 동안

내 솔루션은 내가 약간 Cloudflare 배후 성능에 대해 덜 걱정 내 설정/환경/prodcution.rb

config.serve_static_assets = true 

에 다음을 추가하는 것입니다. 연결된 CSS 및 JS 파일을 제공하는 방법을 찾는 것이 할 일 목록에 있습니다.

1

이를 테스트하고 나를 위해 작동하지 않았다, Heroku가이 픽업 스타일 시트 캐시가 true로 설정되어 제대로되지 않는 이유 어떤 아이디어를 답변

관련 문제