我是 TYPO3 的初学者。我已经用 Kickstarter 做了一个扩展,我只想为这个扩展禁用缓存,而不是我的 TYPO3 网站的其他页面。
我怎样才能做到这一点?
非常感谢。
我是 TYPO3 的初学者。我已经用 Kickstarter 做了一个扩展,我只想为这个扩展禁用缓存,而不是我的 TYPO3 网站的其他页面。
我怎样才能做到这一点?
非常感谢。
您需要注意三个位置。首先看看你的 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;
那应该这样做。
古罗马
此外,在每页基础上禁用或限制缓存时间可能是一种解决方案该设置位于 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/
不幸的是,这些答案已经超过 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
让我们用撰写本文时适用于 TYPO3 CMS 6.0.x-6.2.x 的最新信息来更新这个问题。如果您有一个尚未上线的开发站点,我会使用FluidTYPO3 团队制作的 uncache 扩展。很高兴能够完全禁用缓存,直到您解决了错误,这样您就不会每 2 秒清除一次缓存。
使用以下脚本从当前页面中删除缓存。
$GLOBALS['TSFE']->set_no_cache()
您可以在控制器文件中使用上述脚本。