2013-03-10 3 views
0

Я пытаюсь реализовать кэширование действий на моем контроллере политики, однако он не повторно использует кешированные фрагменты, когда размер рендеринга увеличивается.Кэширование действий не повторное использование больших кэшированных фрагментов

Когда мой индекс активности показывает только 10 объектов JSON, он создает и читает фрагменты для действия правильно. Свидетельствует:

Started GET "/policies" for 127.0.0.1 at 2013-03-10 01:03:38 -0500 
Processing by PolicyController#index as JSON 
Read fragment views/railsdev.com:3000/policies.json (0.3ms) 
    VideoPolicy Load (0.4ms) SELECT `video_policies`.* FROM `video_policies` 
Write fragment views/railsdev.com:3000/policies.json (0.5ms) 
Completed 200 OK in 27ms (Views: 0.2ms | ActiveRecord: 0.4ms) 


Started GET "/policies" for 127.0.0.1 at 2013-03-10 01:03:56 -0500 
Processing by PolicyController#index as JSON 
Read fragment views/railsdev.com:3000/policies.json (0.4ms) 
Completed 200 OK in 1ms (ActiveRecord: 0.0ms) 
[2013-03-10 01:03:56] WARN Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true 

Однако, когда я увеличить число до 10000 JSON объекты, он начинает запрашивать БД и переписать фрагмент с каждым запросом. Свидетельствует:

Started GET "/policies" for 127.0.0.1 at 2013-03-10 01:12:45 -0500 
Processing by PolicyController#index as JSON 
Read fragment views/railsdev.com:3000/policies.json (0.3ms) 
    VideoPolicy Load (6.8ms) SELECT `video_policies`.* FROM `video_policies` 
Write fragment views/railsdev.com:3000/policies.json (3.8ms) 
Completed 200 OK in 3482ms (Views: 0.2ms | ActiveRecord: 7.5ms) 


Started GET "/policies" for 127.0.0.1 at 2013-03-10 01:12:52 -0500 
Processing by PolicyController#index as JSON 
Read fragment views/railsdev.com:3000/policies.json (0.2ms) 
    VideoPolicy Load (1.7ms) SELECT `video_policies`.* FROM `video_policies` 
Write fragment views/railsdev.com:3000/policies.json (115.0ms) 
Completed 200 OK in 3713ms (Views: 0.2ms | ActiveRecord: 1.7ms) 
[2013-03-10 01:12:55] WARN Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true 

Я заметил, это происходит, когда размер файла разрывает 1MB знак Есть ли какая-то (что совместно кстати максимальный размер Memcached объекта Я также использую Memcached.). максимальный размер фрагмента или по другой причине, почему он не кэширует их?

Вот мой контроллер, а также:

class PolicyController < ApplicationController 
    caches_action :index, :cache_path => Proc.new {|controller| controller.params } 

    def index 
    policies = VideoPolicy.all 
    respond_to do |format| 
     format.html 
     format.json{ 
     render :json => policies.to_json 
     } 
    end 
    end 
end 

ответ

1

Я предполагаю, что это страница по умолчанию размер плиты из Memcached, что является причиной этого.

This обсуждение говорит об этой проблеме и некоторых шагах.

Memcahced man page говорит, что -I <size> может использоваться для переопределения значения по умолчанию 1 мб. Можете ли вы попробовать настроить его на 2mb и посмотреть, изменилось ли поведение вашего приложения?

Смежные вопросы