Program Club

Ruby on Rails : 캐시 된 페이지 지우기

proclub 2020. 10. 17. 12:33
반응형

Ruby on Rails : 캐시 된 페이지 지우기


개발 환경에서 페이지를 캐싱하는 RoR 애플리케이션 (ruby v1.8.7; rails v2.3.5)이 있습니다. 이것은 그다지 문제가되지 않지만 캐시 된 페이지의 a요소는 올바르지 않습니다.

development.rb 파일을 변경하지 않았으며 고의로 컨트롤러에 캐싱 명령을 추가하지 않았습니다.

이 사이트 (localhost)에 대한 브라우저 (OSX의 Firefox 3.5) 쿠키 및 페이지 캐시를 지우려고했습니다. Mongrel도 다시 시작했습니다. 도움이되지 않는 것 같습니다.

내가 무엇을 놓치고 있습니까?


development.rb의이 줄은 캐싱이 일어나지 않도록합니다.

config.action_controller.perform_caching             = false

다음을 사용하여 Rails 캐시를 지울 수 있습니다.

Rails.cache.clear

즉, 이것이 캐싱 문제라고 확신하지 않습니다. 페이지를 변경했지만 반영되지 않았습니까? 해당 페이지의 라이브 버전을보고 있지 않습니까? 나는 그것을 한 번했다 (홍조).

최신 정보:

콘솔에서 해당 명령을 호출 할 수 있습니다. 개발중인 애플리케이션을 실행하고 있습니까?

유일한 대안은 렌더링하려는 페이지가 렌더링중인 페이지가 아니라는 것입니다.

서버 출력을 보면 페이지가 다음과 같이 렌더링 될 때 render 명령을 볼 수 있습니다.

Rendered shared_partials/_latest_featured_video (31.9ms)
Rendered shared_partials/_s_invite_friends (2.9ms)
Rendered layouts/_sidebar (2002.1ms)
Rendered layouts/_footer (2.8ms)
Rendered layouts/_busy_indicator (0.6ms)

rake tmp:cache:clear 당신이 찾고있는 것일 수 있습니다.


자산 캐시를 정리하여이 문제를 해결할 수있었습니다.

$ rake assets:clean

/ public에서 페이지의 정적 버전을 확인하고있는 경우 삭제합니다. Rails 3.x는 페이지를 캐시 할 때 공용 폴더에 정적 버전을 남겨두고 사용자가 사이트를 방문 할 때로드합니다. 이것은 캐시를 지운 후에도 유지됩니다.


조각 캐싱을 수행하는 경우 다음 과 같이 캐시 키를 업데이트하여 수동으로 캐시를 중단 할 수 있습니다.

버전 # 1

<% cache ['cool_name_for_cache_key', 'v1'] do %>

버전 # 2

<% cache ['cool_name_for_cache_key', 'v2'] do %>

또는 다음과 같이 ActiveRecord 객체와 같은 비 정적 객체의 상태를 기반으로 캐시를 자동으로 재설정 할 수 있습니다.

<% cache @user_object do %>

이 ^ 메서드를 사용하면 사용자 개체가 업데이트 될 때마다 캐시가 자동으로 재설정됩니다.

참고 URL : https://stackoverflow.com/questions/2462889/ruby-on-rails-clear-a-cached-page

반응형