У меня есть действие контроллера, которое может извлечь выгоду из кэширования. Однако, когда я включаю кеширование действий через обычное:Возможно ли сделать работу caches_action для метода контроллера рельсов, доступ к которому осуществляется через HTTP POST?
caches_action :myaction, :expires_in=>15.minutes
... кэширование не вызывает. Похоже, это потому, что действие вызывается с помощью HTTP POST. Для подобных действий, вызванных использованием HTTP GET, кеширование работает нормально.
Я понимаю, что использование POST для этого действия, вероятно, не является отличным стилем и прерывает соглашения о маршрутизации ресурсов - по-видимому, это также то, почему ответ не кэшируется, даже если это возможно. Однако пока я застрял в этом, так как это то, что делает клиент в настоящее время, и я не могу легко его изменить.
Итак, есть ли способ принудительно кэшировать этот метод, хотя он доступен через POST?
Редактировать: Я должен уточнить, возможно, что POST не имеет побочных эффектов, поэтому безопасно кэшировать действие. На самом деле это должно было быть ПОЛУЧЕНИЕ, в первую очередь, просто нет и не может быть легко изменено. Кроме того, для этого не имеет значения, что браузеры или прокси не будут кэшировать ответ.
Параметры идентичны - есть ли другие данные с сообщением (заголовки?), которые могут привести к его не кешированию? Я не вижу их в журналах, но, возможно, клиент настраивает заголовки, требующие обхода кеша? Я дам предложение Rails.cache. Для стойки/металла мне нужны рельсы 2.3? Сейчас я на 2.2.2. – frankodwyer
См. Исправления выше для ваших комментариев. – ADAM