遵循“使用Rails 4进行敏捷Web开发”的指南 它涵盖产品目录的缓存,仅重新呈现更改的产品。
我编辑过(config / environments / development.rb):
<UserControl
x:Class="Helper.UserControls.UseCasePropertyDisplay"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Helper.UserControls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300"
d:DesignWidth="400"
x:Name="Root">
<StackPanel DataContext="{Binding ElementName=Root}"
Orientation="Horizontal"
Margin="260,0,0,0">
<TextBlock Text="{Binding Label}"
Style="{StaticResource UseCaseTextBlock}"
x:Name="textblock_label"/>
<TextBlock x:Name="textblock_propertyContent"
Text="{Binding Text}"
Style="{StaticResource UseCaseFrameWorkTextElement}"
DoubleTapped="textblock_DoubleTapped" />
<TextBox x:Name="textbox_propertyContent"
Text="{Binding Text}"
Visibility="Collapsed"
Style="{StaticResource UseCaseTextBox}"
LostFocus="textbox_LostFocus" />
</StackPanel>
</UserControl>
添加了返回最近更新产品的代码: (APP /模型/ product.rb)
config.action_controller.perform_caching = true
最后更新了缓存的商店索引: (应用程序/视图/存储/ index.html.erb)
def self.latest
Product.order(:updated_at).latest
end
本书指出测试缓存是否正常的唯一方法是更改视图,所以我所做的只是在一个或两个缓存标记中添加一些lorem ipsum,但浏览器立即显示刷新后的更改......令人沮丧!任何线索?
答案 0 :(得分:1)
尝试使用
<% cache ['v1', Product.order(updated_at: :desc).last] do %>
而不是
<% cache ['store', Product.latest] do %>
答案 1 :(得分:1)
您收藏的缓存密钥不会更改。之所以发生这种情况,是因为cache ['store', Product.latest]
并不像您期望的那样聪明。如果您查看日志,您将看到所使用的缓存键是文字,包括 ActiveRecord :: Relation :: Products 。
使用最后 updated_at 值cache ['store', Product.latest.max(:updated_at)]
获得更好的结果。
在Rails 5中,由于几周前的the addition of cache_key
to ActiveRecord::Relation,这将更容易。