10

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

我怎样才能做到这一点?

非常感谢。

4

6 回答 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;

那应该这样做。

古罗马

于 2011-03-23T13:11:46.670 回答
3

此外,在每页基础上禁用或限制缓存时间可能是一种解决方案该设置位于 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/

于 2012-07-11T20:57:11.263 回答
1

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

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

其他来源是解释性的。

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

$this->pi_USER_INT_obj = 1;
于 2011-03-22T11:10:07.437 回答
1

不幸的是,这些答案已经超过 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

于 2019-04-19T12:50:03.320 回答
0

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

于 2014-07-10T18:54:29.903 回答
-3

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

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

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

于 2016-03-18T10:04:10.970 回答