레일 4는 페이지 캐싱 및 액션 캐싱을 제거했기 때문에 뷰에 변수가없고 html 만있는 동작을 캐시하는 레일 4가 무엇인지 궁금합니다. 보기에서 정적 HTML을 조각화해야합니까? 기한이 만료되도록 설정할 모델이 없을 때 etag/fresh_when을 어떻게 설정합니까? 캐시 할 가장 쉬운 페이지를 캐싱하는 예제 또는 규칙을 찾기 위해 고심하고 있습니다.레일에서의 정적 동작을위한 캐싱/Etag 4
보기가 완전히 정적이지만 페이지에 사용자가 로그인되어 있는지 여부에 따라 동적 탐색 막대가 여전히 있습니다. 액션 캐싱을 사용하지 않고이 정적 페이지를 어떻게 처리하겠습니까? 제거 된 이후 규칙은 보석 버전을 사용하지 않도록 설정 되었습니까?
예 :
class HomesController < ApplicationController
def index
end
end
가정/index.html.erb
<div>A bunch of normal html tags with no erb</div>
편집 :는 @ 세브린의 대답은 내 자신의 연구를 바탕으로, 여기에 내가 함께 온 것입니다 지금까지. 또한
class HomesController < ApplicationController
def index
fresh_when(["some-identifier", current_user, flash])
end
end
, 나는보기가 전개함에 사이에 변경되었을 수 있기 때문에 배포 한 후 모든 ETag를를 다시 https://github.com/n8/bust_rails_etags을 사용하고 있습니다. 나는 이것이 항상 etag을 잘 커버한다고 생각하지만, 나는 언제쯤에는 자동적으로 뷰에 대한 어떤 식별자를 포함 할 것인지, 그리고 "some-idnetifier"가 필요한지 여부가 궁금하다. 때때로 current_user 및 flash가 0이 될 수있는 문제가됩니까?
정적 콘텐츠를 캐싱하는 두 번째 부분에 대해 알아 보겠습니다. 내가 그랬다면 내가 있으리라 믿고있어 :
cache "v1" do
all my html
end
내가 페이지 그렇지 않으면 내 응용 프로그램이 오래된 콘텐츠를 제공 할 변경 될 때 항상 캐시 ID를 변경해야 할 것입니다. 이 방법을 자동화하는 방법이나 이미 레일로 처리 중입니까? 뷰를 업데이트 한 마지막 시간이나 영리한 내용을 캐싱하는 것이 좋으므로 정적 컨텐트가 변경된 시점을 추적 할 필요가 없습니다.
나는 내 대답에서 질문의 두 번째 부분에 응답했습니다. 불명확하거나 더 이상의 질문이 있으면 주저하지 말고 물어보십시오. – severin