0

Gibt es eine Möglichkeit, Fragment Caching bedingt machen, z. Dies wird immer zwischengespeichert:Rails: Conditional Bypass Fragment Caching

Aber wie könnte ich es Cache machen, wenn z. x > 5, so etwas wie:

<% cache :calculation, { if: (x > 5) } do %> 
    <%= calc(x) %> 
<% end %> 

Natürlich könnte es mit einer if-then-Anweisung und Extrahieren aus der zwischengespeicherten Inhalt Funktion durchgeführt werden, aber das ist chaotisch. Möglicherweise könnte es funktionieren, indem Sie unter dieser Bedingung ttl auf Null setzen, aber ich vermute, dass das Element immer noch in den Cache gestellt würde, was verschwendeter Speicherplatz ist.

Antwort

2

Haben Sie cache_if

<% cache_if((x > 5), :calculation) do %> 
    <%= calc(x) %> 
<% end %> 
versucht