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

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

我该怎么做?

非常感谢。

【问题讨论】:

    标签: 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 秒清除一次缓存。

      【讨论】:

        【解决方案6】:

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

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

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

        【讨论】:

        • 这将禁用整个页面缓存。不要使用它。
        猜你喜欢
        • 2018-01-25
        • 2013-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-23
        相关资源
        最近更新 更多