TYPO3:禁用特定插件/扩展的缓存

use*_*816 1 typo3 fluid typoscript extbase

我构建了一个扩展和一个插件,前端用户可以编辑他们的个人资料,但我注意到一个关键问题:

在"编辑配置文件"下,用户可以看到有关未登录的其他用户的完整信息.显然,该表单是在服务器上缓存的,因为添加后:

config.no_cache = 1
Run Code Online (Sandbox Code Playgroud)

它没有再次发生.现在的问题是整个网站上的索引是禁用的.

有没有办法只为这个特定的扩展/插件禁用缓存?

Sta*_*tiX 5

你应该在你的ext_localconf.php:

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
        $_EXTKEY,
        'List',
        array('User' => 'list,editProfil'),
        array('User' => 'editProfil') // Uncached actions
);
Run Code Online (Sandbox Code Playgroud)

以下是解释的地方:https://docs.typo3.org/typo3cms/ExtbaseFluidBook/4-FirstExtension/7-configuring-the-plugin.html

  • 第一个数组不是“缓存动作”而是“可切换控制器动作”。***所有***您的操作都必须在那里列出。未缓存的操作另外位于第二个数组中。 (2认同)

Cla*_*Due 5

如果您希望将其仅应用于特定页面或由集成商控制,则可以覆盖对象的TS渲染指令:

tt_content.list.20.YOURLISTTYPEHERE = USER_INT
Run Code Online (Sandbox Code Playgroud)

或者,如果您将其注册为自定义CType:

tt_content.YOURCTYPEHERE.20 = USER_INT
Run Code Online (Sandbox Code Playgroud)

上面的应该适用于fluid_styled_content和css_styled_content。

config.no_cache = 1正如您发现的那样,几乎不建议使用,因为这会禁用很多功能,而不仅仅是缓存。它还会禁用整个页面的所有缓存,并且几乎总是使特定插件不可缓存,这对于提高性能几乎总是更好的,并且,如果可能的话,仅在插件用来渲染不应缓存的视图的页面上这样做。

如果最终需要缓存视图的某些部分,请小心。就安全性而言,这并不是万灵丹,但它始终是在任何高速缓存标识符中始终包含用户ID(以及身份验证中的其他内容)的一个良好的开端。并尽量不要在任何时候将敏感信息存储在缓存中,包括在其中输出用户名之类的代码的代码。

  • 另请参阅[this answer](/sf/answers/4025421851/),以禁用特定`fluid_styled_content`元素的缓存。 (2认同)