2011-01-29 47 views
1

我正在做一些自定義的請求緩存,並且我想在響應已經發送到服務器之後執行緩慢的保存到磁盤步驟。Rails3 - 如何在請求發送到瀏覽器後處理過濾器

標準的after_filter在響應發送到客戶端之前運行。

根據rails系統的工作原理,可能這是不可能的,因爲它只在完成處理請求時才發回數據。

從我發現一些老問題,這似乎是一個Rack中間件可能是答案,但沒有一個例子似乎遠程相關,如:https://github.com/rack/rack/wiki/List-of-Middleware

我還需要訪問@應答和參數對象,但我認爲這是可能的。

謝謝!

+0

我have'nt我自己試過,但這篇文章可能是你的幫助:http://bibwild.wordpress.com/2011/11/14/multi-threading-in-rails-activerecord-3-0-3- 1 /總之:你必須使用線程 – 2012-07-21 16:50:07

回答

0

有一些我無法理解你的目標。

如果緩存是透明地存儲數據,因此該數據的未來請求可以更快地服務,你應該擔心使緩存的內容,儘快提供給將來的請求,即使這意味着一個組件要求第一個請求等待幾ms以發送響應。

如果寫入到磁盤上被認爲是在上下文太慢了,你可以嘗試從事其他後端緩存的一個Rails的支持。

你也可以添加與Resquedelayed_job後臺作業;該作業將負責創建緩存並與響應異步。但是緩存的目的和緩存的內容一樣會被遺漏。

+0

最快!=最常見。所以我的想法是,我希望另一個用戶在寫入文檔所需的50ms內請求相同頁面的概率爲1%,而不是讓第一個用戶等待50ms。 – Kevin 2011-01-31 04:39:12

相關問題