Feature #60181
Caching mechanism for Fluid Views/Templates
| Status: | New | Start date: | 2014-07-08 | |
|---|---|---|---|---|
| Priority: | Could have | Due date: | ||
| Assigned To: | - | % Done: | 0% |
|
| Category: | View | |||
| Target version: | - | |||
| Has patch: | No |
Description
It would be nice to have have a way to tell Fluid to cache the result of a getter or ViewHelper. This could be done e.g. by prefixing the expression with a $, a similiar special character or otherwise indicating that Fluid should cache this expression:
Won't cache: {object.myComplexGetter}
Will cache: {$ object.myComplexGetter}
Uncached: {object.myComplexGetter}
Cached: {$ object.myComplexGetter}
Won't cache: {acme:time.consuming()}
Will cache: {$ acme:time.consuming()}
Uncached: {acme:time.consuming()}
Cached: {$ acme:time.consuming()}
The cache would operate on a per-file basis, as caching across multiple (independent) template and partial files could raise unforeseen issues and hard-to-debug errors.
The cache would only care about the first part of an expression chain. All subsquent parts of a chain would be executed normally. To avoid running a long or time consuming expression more than once, you could still use the <f:alias> ViewHelper.
Will cache: {$ object.myComplexGetter}
Uses cached result: {$ object.myComplexGetter -> f:count()}
Uses cached result, with the time consuming VH being executed every time:
{$ object.myComplexGetter -> acme:time.consuming()}
I'd love to hear ideas and comments about this. Currently I'm using lots <f:alias> in my code to accomplish this and I'd love to avoid it where possible.
A related feature request for ViewHelpers from someone else: http://forge.typo3.org/issues/3291
Related issues