2017-09-12 5 views
0

は、私は私のusers.html.slimビューで、次があります。インナーHTMLが変更された場合に、フラグメントキャッシュを期限切れにしますか?

.header 
    Welcome 
    - cache ['user/details', user.last_modified] do 
    = render 'user/details', user: @user 

私の問題は、私は​​マークアップを変更したことで、ユーザーが実際に変更されていないので、私はまだキャッシュされたバージョンを取得します。ビューのフラグメントが (ビューの変更では、例えば、HTML)を変更したときに

は、ドキュメントによると、HTMLが変更されたことから、キャッシュの有効期限

キャッシュの断片も期限切れになります。鍵の最後の の文字列は、テンプレートツリーダイジェストです。これは、キャッシングしているビューフラグメントの内容に基づいて計算されたMD5ハッシュ です。 ビューフラグメントを変更すると、MD5ハッシュが変更され、 既存ファイルが期限切れになります。

しかし、それはケースではないようです。

このシナリオを解決する適切な方法は何ですか?あなたがキーに依存するパラメータは変更されていませんが、実際のマークアップは変更されています。

- cache ['user/details/v2', user.last_modified] do 
    = render 'user/details', user: @user 

しかし、それは、これらのシナリオでは、より適切なものだ場合、私は疑問に思って:私のような何かを行う上で考えています。

答えて

0

代わりのuser.last_modifiedはちょうどuserを渡します。

これはuser.iduser.updated_atに基づいてキャッシュキーを作成します。

実際にlast_modifiedがキャッシュキーになりたい場合は、@userを参照しますが、キャッシュキーはuserです。

+0

ユーザーが更新または変更されていません。変更されたのは、ユーザー/詳細の部分的なマークアップです。それは私の質問についてです。 –

+0

私は部分の内部にキャッシュを追加します。ファイルが変更されたときにも期限切れになるはずです。 – kobaltz

関連する問題