Neos.Fusion/Classes/Core/Cache/RuntimeContentCache.php
public function postProcess(array $evaluateContext, $fusionObject, $output)
    {
        if ($this->enableContentCache && $evaluateContext['cacheForPathEnabled'] && $evaluateContext['cacheForPathDisabled']) {
            $contextArray = $this->runtime->getCurrentContext();
            if (isset($evaluateContext['configuration']['context'])) {
                $contextVariables = [];
                foreach ($evaluateContext['configuration']['context'] as $contextVariableName) {
                    $contextVariables[$contextVariableName] = $contextArray[$contextVariableName];
                }
            } else {
                $contextVariables = $contextArray;
            }
            $cacheTags = $this->buildCacheTags($evaluateContext['configuration'], $evaluateContext['fusionPath'], $fusionObject);
            $cacheMetadata = array_pop($this->cacheMetadata);
            $output = $this->contentCache->createDynamicCachedSegment($output, $evaluateContext['fusionPath'], $contextVariables, $evaluateContext['cacheIdentifierValues'], $cacheTags, $cacheMetadata['lifetime'], $evaluateContext['cacheDiscriminator']);
        } elseif ($this->enableContentCache && $evaluateContext['cacheForPathEnabled']) {
            $cacheTags = $this->buildCacheTags($evaluateContext['configuration'], $evaluateContext['fusionPath'], $fusionObject);
            $cacheMetadata = array_pop($this->cacheMetadata);
            $output = $this->contentCache->createCacheSegment($output, $evaluateContext['fusionPath'], $evaluateContext['cacheIdentifierValues'], $cacheTags, $cacheMetadata['lifetime']);
        } elseif ($this->enableContentCache && $evaluateContext['cacheForPathDisabled'] && $this->inCacheEntryPoint) {
            $contextArray = $this->runtime->getCurrentContext();
            if (isset($evaluateContext['configuration']['context'])) {
                $contextVariables = [];
                foreach ($evaluateContext['configuration']['context'] as $contextVariableName) {
                    if (isset($contextArray[$contextVariableName])) {
                        $contextVariables[$contextVariableName] = $contextArray[$contextVariableName];
                    } else {
                        $contextVariables[$contextVariableName] = null;
                    }
                }
            } else {
                $contextVariables = $contextArray;
            }
            $output = $this->contentCache->createUncachedSegment($output, $evaluateContext['fusionPath'], $contextVariables);
        }

        if ($evaluateContext['cacheForPathEnabled'] && $evaluateContext['currentPathIsEntryPoint']) {
            $output = $this->contentCache->processCacheSegments($output, $this->enableContentCache);
            $this->inCacheEntryPoint = null;
            $this->addCacheSegmentMarkersToPlaceholders = false;
        }

        return $output;
    }
public function postProcess(array $evaluateContext, $fusionObject, $output)
    {
        if ($this->enableContentCache && $evaluateContext['cacheForPathEnabled'] && $evaluateContext['cacheForPathDisabled']) {
            $contextArray = $this->runtime->getCurrentContext();
            if (isset($evaluateContext['configuration']['context'])) {
                $contextVariables = [];
                foreach ($evaluateContext['configuration']['context'] as $contextVariableName) {
                    $contextVariables[$contextVariableName] = $contextArray[$contextVariableName];
                }
            } else {
                $contextVariables = $contextArray;
            }
            $cacheTags = $this->buildCacheTags($evaluateContext['configuration'], $evaluateContext['fusionPath'], $fusionObject);
            $cacheMetadata = array_pop($this->cacheMetadata);
            $output = $this->contentCache->createDynamicCachedSegment($output, $evaluateContext['fusionPath'], $contextVariables, $evaluateContext['cacheIdentifierValues'], $cacheTags, $cacheMetadata['lifetime'], $evaluateContext['cacheDiscriminator']);
        } elseif ($this->enableContentCache && $evaluateContext['cacheForPathEnabled']) {
            $cacheTags = $this->buildCacheTags($evaluateContext['configuration'], $evaluateContext['fusionPath'], $fusionObject);
            $cacheMetadata = array_pop($this->cacheMetadata);
            $output = $this->contentCache->createCacheSegment($output, $evaluateContext['fusionPath'], $evaluateContext['cacheIdentifierValues'], $cacheTags, $cacheMetadata['lifetime']);
        } elseif ($this->enableContentCache && $evaluateContext['cacheForPathDisabled'] && $this->inCacheEntryPoint) {
            $contextArray = $this->runtime->getCurrentContext();
            if (isset($evaluateContext['configuration']['context'])) {
                $contextVariables = [];
                foreach ($evaluateContext['configuration']['context'] as $contextVariableName) {
                    if (isset($contextArray[$contextVariableName])) {
                        $contextVariables[$contextVariableName] = $contextArray[$contextVariableName];
                    } else {
                        $contextVariables[$contextVariableName] = null;
                    }
                }
            } else {
                $contextVariables = $contextArray;
            }
            $output = $this->contentCache->createUncachedSegment($output, $evaluateContext['fusionPath'], $contextVariables);
        }

        if ($evaluateContext['cacheForPathEnabled'] && $evaluateContext['currentPathIsEntryPoint']) {
            $output = $this->contentCache->processCacheSegments($output, $this->enableContentCache);
            $this->inCacheEntryPoint = null;
            $this->addCacheSegmentMarkersToPlaceholders = false;
        }

        return $output;
    }
public function postProcess ( array $ evaluateContext , $ fusionObject , $ output ) { if ( $ this -> enableContentCache && $ evaluateContext [ 'cacheForPathEnabled' ] && $ evaluateContext [ 'cacheForPathDisabled' ] ) { $ contextArray = $ this -> runtime -> getCurrentContext ( ) ; if ( isset ( $ evaluateContext [ 'configuration' ] [ 'context' ] ) ) { $ contextVariables = [ ] ; foreach ( $ evaluateContext [ 'configuration' ] [ 'context' ] as $ contextVariableName ) { $ contextVariables [ $ contextVariableName ] = $ contextArray [ $ contextVariableName ] ; } } else { $ contextVariables = $ contextArray ; } $ cacheTags = $ this -> buildCacheTags ( $ evaluateContext [ 'configuration' ] , $ evaluateContext [ 'fusionPath' ] , $ fusionObject ) ; $ cacheMetadata = array_pop ( $ this -> cacheMetadata ) ; $ output = $ this -> contentCache -> createDynamicCachedSegment ( $ output , $ evaluateContext [ 'fusionPath' ] , $ contextVariables , $ evaluateContext [ 'cacheIdentifierValues' ] , $ cacheTags , $ cacheMetadata [ 'lifetime' ] , $ evaluateContext [ 'cacheDiscriminator' ] ) ; } elseif ( $ this -> enableContentCache && $ evaluateContext [ 'cacheForPathEnabled' ] ) { $ cacheTags = $ this -> buildCacheTags ( $ evaluateContext [ 'configuration' ] , $ evaluateContext [ 'fusionPath' ] , $ fusionObject ) ; $ cacheMetadata = array_pop ( $ this -> cacheMetadata ) ; $ output = $ this -> contentCache -> createCacheSegment ( $ output , $ evaluateContext [ 'fusionPath' ] , $ evaluateContext [ 'cacheIdentifierValues' ] , $ cacheTags , $ cacheMetadata [ 'lifetime' ] ) ; } elseif ( $ this -> enableContentCache && $ evaluateContext [ 'cacheForPathDisabled' ] && $ this -> inCacheEntryPoint ) { $ contextArray = $ this -> runtime -> getCurrentContext ( ) ; if ( isset ( $ evaluateContext [ 'configuration' ] [ 'context' ] ) ) { $ contextVariables = [ ] ; foreach ( $ evaluateContext [ 'configuration' ] [ 'context' ] as $ contextVariableName ) { if ( isset ( $ contextArray [ $ contextVariableName ] ) ) { $ contextVariables [ $ contextVariableName ] = $ contextArray [ $ contextVariableName ] ; } else { $ contextVariables [ $ contextVariableName ] = null ; } } } else { $ contextVariables = $ contextArray ; } $ output = $ this -> contentCache -> createUncachedSegment ( $ output , $ evaluateContext [ 'fusionPath' ] , $ contextVariables ) ; } if ( $ evaluateContext [ 'cacheForPathEnabled' ] && $ evaluateContext [ 'currentPathIsEntryPoint' ] ) { $ output = $ this -> contentCache -> processCacheSegments ( $ output , $ this -> enableContentCache ) ; $ this -> inCacheEntryPoint = null ; $ this -> addCacheSegmentMarkersToPlaceholders = false ; } return $ output ; }
Post process output for caching information

The content cache stores cache segments with markers inside the generated content. This method creates cache
segments and will process the final outer result (currentPathIsEntryPoint) to remove all cache markers and
store cache entries.

@param array $evaluateContext The current evaluation context
@param object $fusionObject The current Fusion object (for "this" in evaluations)
@param mixed $output The generated output after caching information was removed
@return mixed The post-processed output with cache segment markers or cleaned for the entry point
Post process output for caching information