2017-08-18 6 views
0

TYPO3プロジェクトでは、条件に基づいてキャッシュを動的に無効にする必要があります。それは非常に特殊な用途であり、それはあまり起こりません。TYPO3のキャッシュをUSER_INT関数で無効にする

USER_INT関数を使用することを計画しました。ここでは、必要に応じてチェックを行い、キャッシュを無効にします。 USER_INT関数は完璧に動作し、ページが読み込まれるたびに呼び出されます。

問題は、キャッシュを無効にすることはできません。少なくとも、方法はわかりません。

コード、私が今持っている:

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

AND関数で私がチェックを実行します。

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 
    } 
} 

私もそれがうまくいきませんでした、設定でプレイしてみました。 面白いことに、私はTypoScriptの中で直接それを設定した場合は、次のとおりです。

config.no_cache = 1 

それは動作しますが、チェックはかなり複雑であることから、私はキャッシュを無効にするかどうか、判断するためにPHPを使用したいです。

私は何か間違っていることを知っています、私はちょうど何を知らない。どんな助けもappretiatedされるでしょう:)

答えて

1

私は以前の回答のいずれかが本当に状況を説明しているとは思わない。ページキャッシュのエントリが生成された後でUSER_INTが実行されるという点で、キャッチ22の種類があります。内部的に動作する方法は、キャッシュ可能なものすべてが最初にレンダリングされることです。その後、すべてのUSER_INTは、後で置き換えられるHTMLソース内のマーカーを出力します。このようにして、キャッシュにはマーカ付きのバージョンを含めることができ、ページ全体をレンダリングせずにレンダリングすることができます。

特殊な状況下でのみconfig.no_cache = 1を設定できるカスタムTypoScript条件を使用することで、一部の条件でのみページキャッシュを無効にしたい場合は、この場合に何をする必要がありますか。このようにして、条件を満たすとキャッシュエントリの生成を防ぎますが、他のすべての要求に対して完全なキャッシュとキャッシュされた出力を保持します。まだあなたが代わりにUSER_INTオブジェクトとして、キャッシュされてはならない、あなたのページの一部を作成することをお勧めしていることを

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

注意。場合によっては、ページキャッシュ全体を無効にする必要があるユースケースがあると、キャッシングフレームワークやUSER_INTがどのように機能するかについて誤解を招く可能性があります。うまくいけば、上記の部分が少し説明されることを願っています。

1

あなたは、おそらく設定$conf['useCacheHash']$conf['no_cache']が行われる必要があります参照してくださいpibase(AbstractPlugin)コードを見てください。

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

+0

情報をありがとう、私は今それをチェックしています。私はUSER_INT関数について話しているので、これがうまくいくかどうかはわかりません。つまり、コントローラの外で実行されます(私は間違っていると思います) – itd

関連する問題