2012-02-13 101 views
1

我有一個Rails應用程序,它顯示呈現爲部分內容的內容,該內容位於我的Rails應用程序之外,但位於同一網站上服務器。如何停止從外部應用程序緩存部分緩存或使用任務清除緩存

這一切都顯示正常,但這一點的目的是讓別人無需重新啓動rails應用程序將內容推送到此文件夾。部署和顯示沒問題,但是內容被緩存了,所以在重新啓動服務器之前它仍然不會更新。我試圖創建待命片段的部分,當內容被部署創建rake任務將其刪除:

筆者認爲:

<% cache("frag_key") do %> 
     <%= render :partial => "#{@content_path}.rhtml" %> 
    <% end %> 

Rake任務

namespace :cache do 
     desc 'Clear memcache' 
     task :clear => :environment do 
     Rails.cache.delete('frag_key') 
     end 
    end 

是有沒有辦法阻止這些特定文件的緩存? 我的解決方案理論上應該工作,我做錯了什麼? 任何幫助表示讚賞。

編輯:我還應該注意我沒有使用memcache。

回答

-1

您的解決方案不起作用。如果你想真正渲染文件,你需要重新啓動應用程序或禁用緩存,這將會讓你的應用程序變慢。

您可以做的僅僅是將部分視爲外部文件,並使用標準IO操作從光盤讀取。如果你需要執行一些rails代碼或者可以訪問應用程序的細節,這種方法是行不通的。

我記得在josévalims精彩的書籍「Crafting Rails Applications」中閱讀了關於在數據庫中存儲視圖代碼的內容。也許這會給你一些關於如何找到解決問題的方法。