2011-12-31 9 views
1

私はRuby on Rails Webサイトを持っています。format.jsonに応答するインデックスメソッドがキャッシュされ続ける

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を使用する関数を呼び出すと、そのデータの最新の更新が得られず、publicディレクトリから古いjsonファイルを提供し続けます。また、もう一度期限切れになるが、通常のページであるウェブサイトのURLが新鮮になる。

私はNginxとPassengerを使用しているRails 3を使用しています。 rails serverを使用して実行すると、正常に動作するため、NginxまたはPassengerで何かをする必要があります。

expireコールでformat => :jsonに電話するなど、何か特別なことはありますか?

答えて

1

私は、あなたがexpire_pageにキャッシュされたコンテンツのフォーマットを伝えていないと考えているので、それはhtmlを前提としています。キャッシュされたHTMLコンテンツが見つからない場合、単に何もしません。

お試しexpire_page :action => :index, :format => 'json'

+1

これは本当にトリックでした。しかし、私はまだ 'expire_page'への一般的な呼び出しがすべてのフォーマットを期限切れにしない理由を知りません。 – Peterdk

+0

@Peterdk 'expire_page'がどのファイルを削除するかを知るためには、フォーマットが必要であると思います。あなたのポイントはまだ良いですが。 'expires_page'はフォーマット固有であり、' caches_page'はフォーマット特有ではありません。おそらく、レールのコアメーリングリストにコメントする価値があります。 –