我剛開始在生產應用程序中使用緩存來加快速度。我已經閱讀了主要的Rails指南,各種博客,源碼本身等等。但就片段緩存而言,我的頭仍不清楚一件簡單的事情:Rails如何分段緩存工作?
當您在更新對象後銷燬緩存時,你只更新單個對象還是該類?我認爲只是單一的對象。
下面是一個例子:
<% @jobs.each do |job| %>
<% cache("jobs_index_table_environment_#{session[:merchant_id]}_job_#{job}") do %>
stuff
<% end %>
<% end %>
我在工作的索引頁使用上面的代碼。每一行呈現了一些信息的用戶想要的東西,一些CSS,點擊查看個人工作等
我在招聘類寫了這個(模型)
after_save do
Rails.cache.delete("jobs_index_table_environment_#{merchant_id}_job_#{self}")
end
after_destroy do
Rails.cache.delete("jobs_index_table_environment_#{merchant_id}_job_#{self}")
end
我要在各個作業對象如果它們被更新或銷燬,則從緩存中銷燬,當然新創建的作業首次在頁面上彈出時會獲得自己的緩存關鍵字。
我不會用@jobs做俄羅斯娃娃的東西,因爲這是我的「神」對象,並且一直在變化。緩存幾乎不會有幫助,因爲該集合可能會在一分鐘內變形。
我的理解是正確的,在上面的視圖中,如果我把第25頁的作業渲染到第一頁,我會在緩存中獲得25個緩存中的對象,然後如果我只更改第一個,緩存的值將被銷燬,下一次加載作業頁面時,它將被重新緩存,而另外24個只會從緩存中提取?
如果你閱讀你的終端輸出,你將會看到「寫入片段」或「讀取片段」的行。我認爲檢查出來會幫助你弄清楚你的代碼在做什麼。 – trosborn