자산을 컴파일하는 것은 단지 레이크 작업 일 뿐이므로 언제든지 작업을 호출 할 수 있습니다. 작업은 bundle exec rake assets:precompile
입니다. 자세한 내용은 http://guides.rubyonrails.org/asset_pipeline.html을 참조하십시오.
그러나 사용자가 업로드 한 이미지는 컴파일 할 자산으로 취급하지 않습니다. 나는 그렇게하는 것이 나쁜 생각 일 것이라고 생각한다.
대신 사용자가 직접 터치 한 것처럼 사용자가 업로드 한 이미지에 고유 한 이름을 지정하십시오. 새로운 이미지가 업로드/대체되면 새로운 이름이 생성됩니다. 이 작업의 예는 paperclip gem에서 찾을 수 있습니다. 이미지를 디스크에 기록하고 레코드/참조를 데이터베이스에 저장합니다. 이러한 이미지는 데이터베이스에 ID가 있으며 URL에는 해당 ID가 포함됩니다. 따라서 /photos/4/nothing.png
및 /photos/2/yes.png
이됩니다. 여기서 2와 4는 메타 데이터/이미지와의 관계가있는 데이터베이스 레코드를 가리 킵니다.
또한, image_tag
레일스 도우미를 사용하면 이미지의 URL에 캐시 버스터가 자동으로 추가됩니다. 캐시 버스터는 쿼리 문자열로 수행되므로 image_tag('test.png')
은 /images/test.png?1234567890
이됩니다. 때로는 특정 프록시가 쿼리 문자열 캐시를 '상실'하지 않지만 소수 인 경우가 있습니다.
"그러나 사용자가 업로드 한 이미지는 컴파일 할 자산으로 취급하지 않습니다. 나는 이렇게하는 것이 나쁜 생각이라고 생각한다. "아주 잘 할 수 있습니다. 내 직감은 아마도 그것이 옳다고 말합니다. 그러나 그것이 잘못된 길일 수있는 이유를 생각해 내시겠습니까? –
나는 왜 당신이이 자산들을 컴파일하기를 원하는지 스스로에게 물어볼 필요가 있다고 생각합니까? 어떤 이점을 얻고, 그와 관련된 비용은 얼마입니까? rake assets 실행하기 : 누군가가 이미지를 업로드 할 때마다 사전 컴파일 작업이 매우 비쌉니다! image_tag 도우미로 할 수없는 이미지와 관련하여 자산 파이프 라인에서 무엇을 얻을 수 있습니까? 이미지 애셋을 컴파일하는 데 미묘한 이점이 있습니다. 그러나 프로젝트의 요구 사항이 아니라면 지정되지 않은/실현되지 않은 게인에 대해 너무 많은 복잡성이 도입 될 수 있습니다. – Ryan