метод index, который отвечает на format.json, продолжает кэшироваться - PullRequest
1 голос
/ 31 декабря 2011

У меня есть сайт Ruby on Rails.

class DefinitionsController < ApplicationController
   caches_page :index
   def index
     responds_to do |format|
       format.json { render json: @something}
     end
   end
end

Когда я нажимаю myapp.host.com/definitions.json, я получаю данные JSON.Однако, когда я вызываю функцию, которая использует expire_page :action => :index, я не получу свежего обновления этих данных, она продолжает получать старый файл json из каталога public.Другой URL-адрес веб-сайта, срок действия которого также истек, но является обычной страницей, действительно обновляется.

Я использую Rails 3, хостинг с использованием Nginx и Passenger.Когда я запускаю его, используя rails server, он работает нормально, поэтому это должно быть что-то с Nginx или Passenger.

Есть ли что-то особенное, что мне нужно сделать, например, вызов format => :json при вызове expire?

1 Ответ

1 голос
/ 31 декабря 2011

Я считаю, что проблема в том, что вы не указали expire_page формат кэшированного содержимого, поэтому он принимает HTML.Не найдя кэшированный HTML-контент, он просто ничего не делает.

Попробуйте expire_page :action => :index, :format => 'json'.

...