TYPO3 - 禁用一个扩展的缓存

10

我是TYPO3的初学者。我使用Kickstarter创建了一个扩展,并且我想仅为该扩展禁用缓存,而不是对于我的TYPO3网站的其他页面。

我应该如何做呢?

非常感谢。

6个回答

27

你需要注意三个位置。首先查看你的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 Roman


你关于 ext_localconf.php 文件的建议刚刚解决了一直困扰我好久的问题... - Ian Devlin
非常老旧且过时的答案。 - Sybille Peters

2
也可以在每个页面上禁用或限制缓存时间,这可能是一个解决方案。该设置位于页面图标编辑 ->选项卡行为 ->缓存设置下(使用?no_cache=1 URL参数)。
另一种方法是在数据更改时清除缓存,在sysfolder中设置单个页面的ts页面配置的自动清除。TCEMAIN.clearCacheCmd = 1,3,5-数字是pid逗号分隔,TCEMAIN.clearCacheCmd = all-或清除所有缓存。
在archive.org wayback machine上的上下文链接-请注意,所有这些都非常古老-针对typo3 v4.5..尽管我猜有些仍然在运行..

http://web.archive.org/web/20180128154846/http://typo3blog.at/blog/artikel/typo3-caching-grundlagen/

http://web.archive.org/web/20150420070446/http://typo3weblog.de/2008/07/26/tcemainclearcachecmd-statt-clear-cache-button/


1
如其他答案所述 - 在页面属性中禁用缓存会导致该页面的完全缓存禁用,而不仅仅是对扩展本身的禁用。 - Krystian Szymukowicz
两个链接都失效了。 - Sybille Peters
请参阅帮助中心:“为链接提供上下文 鼓励提供外部资源的链接,但请在链接周围添加上下文,以便您的同行用户了解它是什么以及为什么存在。始终引用重要链接的最相关部分,以防外部资源无法访问或永久离线。” https://stackoverflow.com/help/how-to-answer - Sybille Peters

1

使用$GLOBALS['TSFE']->set_no_cache()禁用缓存整个页面!

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

其他资源进行解释。

相反,确保你的扩展是USER_INT类型,参见文档

$this->pi_USER_INT_obj = 1;

1
这并不能解决所有问题,你仍然需要按照其他答案中描述的方式更改你的 ext_localconf.php 文件。 - cweiske

1

-1

让我们使用更近期的信息更新此问题,适用于TYPO3 CMS 6.0.x-6.2.x。如果您有一个尚未上线的开发站点,我建议使用FluidTYPO3团队制作的uncache扩展程序。这很好,因为可以完全禁用缓存,直到解决了错误,这样您就不必每两秒清除一次缓存。


-3

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

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

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


1
那会禁用整个页面缓存。不要使用它。 - fnagel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接