Кэширование результата JSON в Rails - PullRequest
5 голосов
/ 15 июня 2011

У меня есть следующий контроллер, который возвращает список тегов при получении HTTP-запроса к / tags

class TagsController < ApplicationController
  caches_page :index

  def index
    respond_to do |format|
      format.json {
        render :json => Tag.all(:order => "name").to_json
      }
    end
  end
end

Я замечаю, что всякий раз, когда делается запрос к / tags, Rails генерируетфайл кэша в /public/tags.json.Тем не менее, он никогда не использует этот файл кэша.Вместо этого он всегда запускает SQL-запрос для получения тегов:

Started GET "/tags" for 127.0.0.1 at 2011-06-15 08:27:29 -0700
  Processing by TagsController#index as JSON
  Tag Load (0.7ms)  SELECT "tags".* FROM "tags" ORDER BY name
Write page <project root path>/public/tags.json (0.3ms)
Completed 200 OK in 35ms (Views: 1.1ms | ActiveRecord: 0.7ms)

Почему Rails не использует генерируемый файл кэша?Это потому, что запрос для / тегов, а не /tags.json?

Ответы [ 2 ]

2 голосов
/ 15 июня 2011

я думаю, что вы, вероятно, правы, вы можете указать опцию :cache_path, чтобы указать, как назвать файл, так что

caches_page :index, :cache_path => '' # if not try 'tags'

вы также можете пройти процедуру, если вы хотите включить параметры

caches_page :index , :cache_path => Proc.new {|controller| controller.params }

или что-нибудь еще

0 голосов
/ 15 июня 2011

Ваш каталог кеша может быть не в том месте.У меня была эта проблема раньше, когда я пытался поместить кеш в каталог, отличный от public.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...