Layout Cache

Layout cache is based on layout context.

It uses the Context::getHash method to generate the cache key.

Layout cache uses OroCacheBundle. For more information, see BlockViewCache.

Last Modification Date

The layout context contains the last modification date of the files with layout updates. It is registered with the layout.context_configurator - LastModifiedDateContextConfigurator.

BlockView Tree

The layout cache contains the root BlockView with children and variables.

The BlockView tree is serialized with oro_layout.block_view_serializer.

The following is the list of normalizers used in the oro_layout.block_view_serializer:

All normalizers are registered as a service in the DI container with the layout.block_view_serializer.normalizer tag.

Expressions / Evaluate and Evaluate Deferred

There are two groups of expressions in the BlockView options:

For example:

1
2
3
4
5
6
7
8
 actions:
     ...
     - '@add':
         id: blockId
         parentId: parentId
         blockType: typeName
         options:
             optionName: '=context["valueKey"]'

It will be evaluated before the BlockTypeInterface::buildBlock and the result will be cached.

1
2
3
4
5
6
7
8
 actions:
     ...
     - '@add':
         id: blockId
         parentId: parentId
         blockType: typeName
         options:
             optionName: '=data["valueKey"]'

It will be evaluated after BlockTypeInterface::finishView and the result will not be cached.