【问题标题】:Disable Cache in TYPO3 in a USER_INT function在 USER_INT 函数中禁用 TYPO3 中的缓存
【发布时间】:2017-08-18 14:22:28
【问题描述】:

我正在开发一个 TYPO3 项目,我必须根据条件动态禁用缓存。这是一个非常具体的用例,不会经常发生。

我计划使用 USER_INT 函数,我将在其中执行检查并在必要时禁用缓存。 USER_INT 函数完美运行,每次页面加载时都会调用它。

问题是,我不能禁用缓存,或者至少我不知道怎么做。

代码,我现在有:

page = PAGE
page {
    typeNum = 0
    adminPanelStyles = 0
    11 = USER_INT
    11.userFunc = [COMPANY_NAMESPACE]\PageHandler->checkCache

在函数中我执行检查:

public function checkCache($content,$conf){
    global $TSFE; 

    $id = $TSFE->id;

    if($this->checkIfDisableCache($id)){
        //$TSFE->set_no_cache(); // <---- first I tried this one
        $TSFE->no_cache=true; // <-----after a while I got despoerate and tried to disable it directly
    }
}

我也尝试过使用配置,但没有成功。 有趣的是,如果我直接在打字稿中设置它:

config.no_cache = 1

它可以工作,但是由于检查相当复杂,我想使用 PHP 来确定是否应该禁用缓存。

我知道我做错了什么,我只是不知道是什么。任何帮助将不胜感激:)

【问题讨论】:

    标签: php caching typo3


    【解决方案1】:

    我认为前面的任何一个答案都不能真正解释这种情况。您在这里有一个catch-22,因为您的USER_INT 在生成页面缓存条目后执行。它在内部工作的方式是首先渲染所有可以缓存的内容,然后每个USER_INT 在 HTML 源代码中输出一个标记,然后替换该标记。这样,缓存可以包含带有标记的版本,并且无需渲染整个页面即可渲染这些版本。

    因此,如果您希望仅在某些情况下禁用页面缓存,则在这种情况下您需要做的是使用自定义 TypoScript 条件,该条件只能在特殊情况下设置config.no_cache = 1。这样,如果满足条件,您就可以防止生成缓存条目,但会为每个其他请求保留完整的缓存和缓存输出。

    https://docs.typo3.org/typo3cms/TyposcriptSyntaxReference/TypoScriptParserApi/CustomConditions/Index.html

    请注意,仍然建议您将页面中不能缓存的部分创建为USER_INT 对象。有一个在某些情况下需要禁用整个页面缓存的用例表明可能误解了缓存框架和/或USER_INT 的工作原理。希望以上内容能稍微解释一下这些部分。

    【讨论】:

      【解决方案2】:

      如果您查看 pibase (AbstractPlugin) 代码,您会发现应该设置 $conf['useCacheHash']$conf['no_cache']

      https://api.typo3.org/typo3cms/current/html/_abstract_plugin_8php_source.html#l00190

      【讨论】:

      • 感谢您的信息,我现在正在查看。我不知道这是否可行,因为我们正在谈论一个 USER_INT 函数,这意味着它在控制器之外执行(我认为,虽然可能是错误的)
      【解决方案3】:

      如果您将此对象创建为 USER_INT,它将在主页面渲染之外呈现为非缓存。 https://docs.typo3.org/typo3cms/TyposcriptReference/ContentObjects/UserAndUserInt/Index.html

      【讨论】:

        猜你喜欢
        • 2011-07-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-24
        • 1970-01-01
        相关资源
        最近更新 更多