Rails3 - как обработать фильтр после отправки запроса в браузер - PullRequest
1 голос
/ 29 января 2011

Я выполняю произвольное кэширование запросов и хочу выполнить медленный шаг сохранения на диск после того, как ответ уже отправлен на сервер.

Стандартный after_filter запускается до того, как ответ все еще отправляется клиенту.

В зависимости от того, как работает система rails, возможно, это невозможно, поскольку она отправляет обратно данные только после того, как полностью завершит обработку запроса.

Из некоторых старых вопросов, которые я нашел, кажется, что промежуточное программное обеспечение Rack могло бы быть ответом, но ни один из примеров не кажется отдаленно связанным, как: https://github.com/rack/rack/wiki/List-of-Middleware

Мне также нужен доступ к объектам @response и params, но я думаю, что это возможно.

Спасибо!

1 Ответ

0 голосов
/ 30 января 2011

Есть кое-что, чего я не могу понять о вашей цели.

Если кеш - это компонент, который прозрачно хранит данные, чтобы будущие запросы на эти данные могли обслуживаться быстрее , вашследует позаботиться о том, чтобы сделать кэшированный контент доступным для будущих запросов как можно скорее, даже если это означает, что для первого запроса нужно подождать несколько мс, чтобы его ответ был отправлен.

Если запись на диск тоже считаетсяМедленно в вашем контексте, вы можете попробовать задействовать один из других кеширующих бэкендов, поддерживаемых Rails.

Вы также можете добавить фоновое задание с помощью Resque или delayed_job ;эта работа позаботится о создании вашего кэша и будет асинхронной с ответом.Но опять же цель кэширования будет упущена вместе с кэшированным содержимым.

...