Обновление кэширования в Rails после истечения срока действия
Я ищу, чтобы истечь, а затем обновить кэш для действия контроллера, используя общедоступную конечную точку.
В настоящее время в моем приложении /all возвращает кешированный json, а / update истекает кеш. Вы можете увидеть существующий соответствующий код ниже. То, что я хотел бы сделать, это не только закончить кеш, но и принудительно обновить. Итак, мой вопрос:
Есть ли способ инициировать обновление кэша действий после его истечения, не затрагивая действие?
Если ответ на этот вопрос - нет (как я начинаю подозревать), то каков наилучший способ сделать это? Мне требуется действие обновления для возврата статуса HTTP 200, а не перенаправления 301, поэтому просто перенаправление на /all не вариант.
VendorsController
caches_action :all, :expires_in=>2.weeks
....
def all
respond_to do |format|
format.json { render :json => Vendor.all }
format.html { render :json => Vendor.all }
end
end
....
def update
render :nothing => true
expire_action :action => :all
end
1 ответ
Вы должны использовать write_fragment
def update
render :nothing => true
expire_action :action => :all
cache_path = ActionCachePath.new(self, {:action => :all}, false).path
write_fragment(cache_path, render_to_string(:json => Vendor.all))
end
Источник, который может помочь: