2016-07-15 6 views
0

웹 사이트 성능을 높이기 위해 조각 캐싱을 추가하려고했습니다. 는 지금, 나는 development 모드에서 테스트, 그래서 나는이레일 프래그먼트 캐싱이 작동하지 않습니다.

#environments/developments.rb 
config.action_controller.perform_caching = true 

그리고 erb

<% @projects.each do |project| %> 
    <% cache project do %> 
     <%= link_to "#{project.name}", category_project_path(@category, project) %> 
     <br> 
    <% end %> 
<% end %> 

그러나, 그것이 작동하지 보인다에서 변경합니다. 페이지를 새로 고칠 때마다 터미널에 다시 쿼리가 표시됩니다.

처음으로 한 번만 쿼리하거나 캐시의 개념을 잘못 이해했다고 생각 했습니까?

Processing by CategoriesController#show as HTML 
    Parameters: {"id"=>"3306"} 
    Category Load (0.4ms) SELECT "categories".* FROM "categories" WHERE "categories"."id" = $1 LIMIT 1 [["id", 3306]] 
    Project Load (0.5ms) SELECT "projects".* FROM "projects" WHERE "projects"."category_id" IN (3306) 
    (0.4ms) SELECT DISTINCT COUNT(DISTINCT "projects"."id") FROM "projects" WHERE "projects"."category_id" = $1 [["category_id", 3306]] 
    Project Load (1.0ms) SELECT DISTINCT "projects".* FROM "projects" WHERE "projects"."category_id" = $1 LIMIT 10 OFFSET 0 [["category_id", 3306]] 
    Cache digest for app/views/categories/show.html.erb: 9b54e2d9c7ce230e3f6a333f00d549da 
Read fragment views/projects/3670-20160715055333331671000/9b54e2d9c7ce230e3f6a333f00d549da (0.2ms) 
    Cache digest for app/views/categories/show.html.erb: 9b54e2d9c7ce230e3f6a333f00d549da 
Read fragment views/projects/3677-20160715055334439274000/9b54e2d9c7ce230e3f6a333f00d549da (0.2ms) 
    Cache digest for app/views/categories/show.html.erb: 9b54e2d9c7ce230e3f6a333f00d549da 
Read fragment views/projects/3678-20160715055334446172000/9b54e2d9c7ce230e3f6a333f00d549da (0.2ms) 
    Cache digest for app/views/categories/show.html.erb: 9b54e2d9c7ce230e3f6a333f00d549da 
Read fragment views/projects/3689-20160715055334536421000/9b54e2d9c7ce230e3f6a333f00d549da (0.1ms) 
    Rendered categories/show.html.erb within layouts/application (8.7ms) 
Completed 200 OK in 31ms (Views: 26.0ms | ActiveRecord: 2.3ms) 
+0

로그에 따르면 프로젝트는 캐시에서 읽습니다. 행은 "조각보기 읽기/projects/3670-20160715055333331671000"과 같이 보입니다. – power

+0

그래서 다시 쿼리하고 새 쿼리 데이터를 사용할지 아니면 데이터를 캐시할지 자동 결정합니다. –

답변

0

로그에 따르면 데이터가 캐시에서 채워지고 제품에 대한 쿼리가 실행되지 않는 것처럼 보입니다.

views/projects/3670-20160715055333331671000/9b54e2d9c7ce230e3f6a333f00d549da 

중간 숫자는 제품 레코드 updated_at 속성에 타임 스탬프 값 뒤에 PRODUCT_ID이다. Rails는 타임 스탬프 값을 사용하여 오래된 데이터를 제공하지 않도록합니다. updated_at의 값이 변경되면 새 키가 생성됩니다 (데이터베이스에 대한 쿼리가 실행 됨). 그런 다음 Rails는 해당 키에 새 캐시를 작성하고 이전 키에 기록 된 이전 캐시는 다시 사용되지 않습니다. 희망이 도움이됩니다!

+0

고마워, 이제 알 겠어. 좋은 대답! –

관련 문제