如何为自定义内容元素定义自定义缓存生命周期?

How to define custom cache lifetime for custom content elements?

TypoScript cache 不应适用于这样的自定义内容元素:

tt_content {
    my_custom_element =< lib.contentElement
    my_custom_element {
        // tested also with stdWrap.cache
        cache {
            key = my_custom_element
            // 10 seconds to test
            lifetime = 10
        }
        templateName = MyCustomElement
        dataProcessing.10 = Example\Project\DataProcessing\FetchDataProcessor
        dataProcessing.10 {
            fetchUri = https://www.example.com/resource
            as = fetched_data
        }
    }
}

...还是我理解有误?
https://docs.typo3.org/m/typo3/reference-typoscript/master/en-us/Functions/Cache.html
我希望为此内容元素定义自定义缓存生命周期。

嗨,是的,这会将您的元素存储到缓存框架中 5 秒,之后将重新呈现。

密钥对于您的内容的每个变体都应该是唯一的。由于您在此处具有自定义内容元素,因此您的编辑可能可以输入数据。最好 ro 在键中包含 Content 元素的 uid。

还有5秒真的很短。也许您想实现一个插件而不是内容元素

可能的解决方案:

tt_content {
    // COA_INT to ensure the block .my_custom_element isn't cached
    my_custom_element = COA_INT
    my_custom_element {
        10 =< lib.contentElement
        10 {
            // Re-add cache for the block .10
            cache {
                // Use UID of content element when user can edit content of it
                key = my_custom_element_{field:uid}
                key.insertData = 1
                // For test currently 10 seconds
                lifetime = 10
            }
            templateName = MyCustomElement
            dataProcessing.10 = Example\Project\DataProcessing\FetchDataProcessor
            dataProcessing.10 {
                fetchUri = https://www.example.com/resource
                as = fetched_data
            }
        }
    }
}

但它有(巨大的)缺点:

  • 放置内容元素的页面 HTML 不会被浏览器缓存。
  • 静态文件缓存扩展也不适用于此页面。