TYPO3 - 禁用扩展缓存

Posted

技术标签:

【中文标题】TYPO3 - 禁用扩展缓存【英文标题】:TYPO3 - Disable cache for an extension 【发布时间】:2011-07-15 17:54:36 【问题描述】:

我是 TYPO3 的初学者。我在 Kickstarter 上做了一个扩展,我只想为这个扩展禁用缓存,而不是我的 TYPO3 网站的其他页面。

我该怎么做?

非常感谢。

【问题讨论】:

【参考方案1】:

您需要注意三个位置。首先看看你的 ext_localconf.php 文件。对于每个插件(我的意思是前端插件),都有一行与此类似:

t3lib_extMgm::addPItoST43($_EXTKEY, 'pi1/class.tx_yourext_pi1.php', '_pi1', 'list_type', 1);

要禁用缓存,您需要将最后一个值设置为零,如下所示。

t3lib_extMgm::addPItoST43($_EXTKEY, 'pi1/class.tx_yourext_pi1.php', '_pi1', 'list_type', 0);

在插件的 PHP 文件(例如 pi1/class.tx_yourext_pi1.php)中,您需要确保以下行被删除、注释掉或更改为“false”

$pi_checkCHash = true;

最后,将此行添加到您的 main() 函数中(在其余部分的下方):

$this->pi_USER_INT_obj = 1;

应该可以的。

cu 罗马

【讨论】:

您对 ext_localconf.php 文件的建议刚刚解决了一些让我为 aaaaaages 发疯的问题...【参考方案2】:

另外禁用或限制每页的缓存时间可能是一个解决方案 该设置位于 pageicon 编辑 -> 选项卡行为 -> 缓存设置下 (?no_cache=1 url 参数)

另一种方法是在数据更改时清除缓存 在 sysfolder 中/在其 ts 页面配置中为单页设置自动清除 TCEMAIN.clearCacheCmd = 1,3,5 -- 数字以 pid 逗号分隔 TCEMAIN.clearCacheCmd = all -- 或全部清除缓存

http://typo3blog.at/blog/artikel/typo3-caching-grundlagen/

http://typo3weblog.de/2008/07/26/tcemainclearcachecmd-statt-clear-cache-button/

【讨论】:

如其他答案中所述 - 在页面属性中禁用缓存会导致该页面的完全缓存禁用,而不仅仅是扩展本身。【参考方案3】:

$GLOBALS['TSFE']->set_no_cache() will disable caching 用于整个页面

如果要禁用页面缓存,请调用函数$GLOBALS["TSFE"]->set_no_cache()。在开发过程中调用它!并调用它,如果您创建的内容可能没有被缓存。

Other sources 是解释性的。

相反,请确保您的扩展程序是 USER_INT 类型,参见。 the docs.

$this->pi_USER_INT_obj = 1;

【讨论】:

这并不能解决所有问题,您仍然需要按照其他答案中的说明更改 ext_localconf.php。【参考方案4】:

不幸的是,这些答案已经超过 8 年了。现在 ExtensionUtility 类提供了一个开关,用于根据操作禁用缓存:

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
    'MyCompany.' . $_EXTKEY,
    'Sample',
    ['Sample' => 'index'],
    // non-cacheable actions:
    ['Sample' => 'index']
);

https://docs.typo3.org/typo3cms/ExtbaseFluidBook/4-FirstExtension/7-configuring-the-plugin.html

【讨论】:

【参考方案5】:

让我们用撰写本文时适用于 TYPO3 CMS 6.0.x-6.2.x 的最新信息来更新这个问题。如果你有一个尚未上线的开发站点,我会使用 FluidTYPO3 team 制作的 uncache 扩展。很高兴能够完全禁用缓存,直到您解决了错误,这样您就不会每 2 秒清除一次缓存。

uncache at TER(TYPO3 扩展库) uncache at GitHub

【讨论】:

【参考方案6】:

使用以下脚本从当前页面中删除缓存。

$GLOBALS['TSFE']->set_no_cache() 

您可以在控制器文件中使用上述脚本。

【讨论】:

这将禁用整个页面缓存。不要使用它。

以上是关于TYPO3 - 禁用扩展缓存的主要内容,如果未能解决你的问题,请参考以下文章

Typo3 安装扩展后崩溃:解析错误:语法错误

TYPO3 测试框架 - FunctionalTestCase 未从扩展加载 TCA 覆盖

Typo3 扩展 - 只保存文件路径

带有作曲家的 TYPO3 扩展不工作

自动加载本地 TYPO3 扩展的类

Typo3扩展配置