2014-06-05 65 views
5

我正在跟隨'帶有Rails 4的敏捷Web開發指南'指南,並且談到了關於緩存的部分。下面是要遵循的步驟:如何判斷緩存是否正常工作。 Rails 4

  1. 在配置/環境/ development.rb

    config.action_controller.perform_caching = true 
    
  2. 在應用程序/模型/ product.rb

    def self.latest 
        Product.order(:updated_at).last 
    end 
    
  3. 的意見

    /存儲/index.html.erb

    <% cache ['store', Product.latest] do %> 
        <% @products.each do |product| %> 
         <% cache ['entry', product] do %> 
          <div class="entry"> 
           <%= image_tag(product.image_url) %> 
           <h3><%= product.title %></h3> 
           <%= sanitize(product.description) %> 
           <div class="price_line"> 
            <span class="price"><%= number_to_currency(product.price) %></span> 
           </div> 
          </div> 
         <% end %> 
        <% end %> 
    <% end %> 
    

爲了驗證現金是否奏效,該書說:「至於驗證這個工作,遺憾的是沒有太多可以看到。如果你去那個頁面,你應該看不到任何變化,這實際上是重點!您可以做的最好做法是更改模板內任何位置的模板,而不更新任何產品並驗證您沒有看到該更新,因爲該頁面的緩存版本尚未更新「。

但是,當我嘗試在緩存塊中的代碼中添加一個「Hello」字符串時,它會出現在頁面上,我已經完成了所有的服務器重新啓動以及沒有完成的操作。主辦我看到這行

Cache digest for app/views/store/index.html.erb: 6c620ede1d4e824439a7b0e3b177620f 

這不是他們的,當我有 config.action_controller.pe rform_caching =假

鏈接到git的樞紐回購:改變文件的時候,所以它更容易操縱,而不是緩存https://github.com/BrianLobdell/depot

謝謝你,布萊恩

+0

那又如何?一切似乎工作...... – joni

+1

在本書中測試的方式表示,將某些東西添加到未修改產品的緩存塊中(如「hello」字符串),並且如果緩存正在工作,則不會顯示這一頁。但是,在我的情況下,「Hello」字符串確實出現 – megacanyon

回答

2

Rails的更新緩存。

您可以使用緩存消化在你的Rails控制檯的頁面檢索緩存片段(摘要可能已經改變,確保使用最近的一個!):

key = ['store', Product.latest, '6c620ede1d4e824439a7b0e3b177620f'] 
ActionController::Base.new.read_fragment(key) 

這應該返回緩存分段。爲了確保紅寶石實際命中緩存提供該頁面時,你可以用一些其他內容替換片段:「它的工作原理」

ActionController::Base.new.write_fragment(key, 'it works!') 

刷新頁面,你應該看到

+0

對不起,我對此很陌生,所以我對這段代碼應該到哪裏以及它究竟做什麼感到有點困惑。 – megacanyon

+0

我也很困惑,爲什麼書中示例中給出的代碼無法按照本書描述的方式進行測試。 – megacanyon

+1

您可以從[Rails控制檯](http://guides.rubyonrails.org/command_line.html#rails-console)運行代碼:在終端中輸入「rails console」以啓動它。 – Stefan

相關問題