2010-02-23 62 views
0

我有一個Rails應用程序,其數據庫從外部C++程序更新。我想加快使用片段緩存的應用程序,但是當記錄更新時,相應的片段緩存條目需要過期。有任何想法嗎?從外部應用程序過期Rails分段緩存

回答

1

如果C++應用程序直接與數據庫對話,則可以使用片段緩存與cache_key的組合。

它很容易和內置在Rails中。您所要做的就是確保您的C++應用程序在主記錄內容更新時更新記錄的updated_at字段。 然後,您可以將片段的範圍限制爲記錄對象,並且記錄更改時緩存會自動過期。

<% cache [@article, :metadata] do %> 
here the content to be cached 
for example the <%= @article.title %>. 
:metadata is simply a name for this fragment. 
<% end %> 

假設@article記錄被保存在2010-02-10 18:00:00,該片段將在/path/to/cache/.../24-20100210180000被緩存。當C++更新記錄並更改updated_at列時,緩存將失效並且下一個請求會再次自動點擊內容。

有關緩存的更多信息,請查看http://railslab.newrelic.com/scaling-rails