[TYPO3-dev] Extbase Cache/CHash(?) issue with realURL and Multi Language Domains

Tolleiv Nietsch tolleiv.nietsch at typo3.org
Sat Jun 23 13:40:23 CEST 2012


Hi,

you might want to checkout out the features introduced with 
https://review.typo3.org/#/c/4704/

These configurations where made for equal issues (e.g. on typo3.org). 
Especially with extbase the controller and action might or might not be 
part of the URL and the resulting cHash should ideally not be affacted 
by this.

Patch and issue description show the issue very well: 
http://forge.typo3.org/issues/29365

Hope this helps.

Cheers,
Tolleiv

g4-lisz at tonarchiv.ch schrieb:
> Hi there
>
> Since we switched our site to language dependent multi domain (one tree
> concept) there's a cache issue with our extension...
>
> Typo 4.6.7 with RealURL 1.12.1 and Extbase 1.4.3
>
> We are usign 3 languages with 3 related domains:
>
> L=0 => www.defaultdom.ch
> L=1 => www.frenchdom.ch
> L=2 => www.italiandom.ch
>
> There's some TS trickery to set the right BaseURL/doc title:
>
> BASEURL = http://www.defaultdom.ch/
> PAGETITLE = Sitename Default
> [globalString = ENV:HTTP_HOST=*frenchdom.ch]
> BASEURL = http://www.frenchdom.ch/
> PAGETITLE = Sitename French
> [globalString = ENV:HTTP_HOST=*italiandom.ch]
> BASEURL = http://www.italiandom.ch/
> PAGETITLE = Sitename Italian
> [global]
>
> page {
> config {
> # settings for RealURL
> simulateStaticDocuments = 0
> baseURL = {$BASEURL}
> tx_realurl_enable = 1
> prefixLocalAnchors = all
> }
> ...
> }
> page.headerData {
> 348 = COA
> 348 {
> wrap = <title>|</title>
> 10 = TEXT
> 10.value ={$PAGETITLE}
> 20 = TEXT
> 20.value = :&#32;
> 30 = TEXT
> 30.data = field:title
> }
> }
>
>
> The realurl_conf.php looks like this:
>
> <?php
> $TYPO3_CONF_VARS['EXTCONF']['realurl']['_DOMAINS'] = array(
> 'encode' => array(
> array(
> 'GETvar' => 'L',
> 'value' => '0',
> 'useConfiguration' => '_DEFAULT',
> 'urlPrepend' => 'http://www.defaultdom.ch'
> ),
> array(
> 'GETvar' => 'L',
> 'value' => '1',
> 'useConfiguration' => '_DEFAULT',
> 'urlPrepend' => 'http://www.frenchdom.ch'
> ),
> array(
> 'GETvar' => 'L',
> 'value' => '2',
> 'useConfiguration' => '_DEFAULT',
> 'urlPrepend' => 'http://www.italiandom.ch'
> ),
> ),
> 'decode' => array(
> '/^(www\.)?defaultdom\.ch$/' => array(
> 'GETvars' => array(
> 'L' => '0',
> ),
> 'useConfiguration' => '_DEFAULT'
> ),
> '/^(www\.)?frenchdom\.ch$/' => array(
> 'GETvars' => array(
> 'L' => '1',
> ),
> 'useConfiguration' => '_DEFAULT'
> ),
> '/^(www\.)?italiandom\.ch$/' => array(
> 'GETvars' => array(
> 'L' => '2',
> ),
> 'useConfiguration' => '_DEFAULT'
> ),
> ),
> );
>
> On one page we embedded a pluign twice with different Controller/Action.
> These plugin Controller/Actions are set by FlexFrom configuration. The
> related action controller functions both use the same object type in
> it's argument list:
>
> public function spitalinfoAction(Tx_Hplusinfo_Domain_Model_Klinik
> $klinik) { ... }
> and
> public function infoAction(Tx_Hplusinfo_Domain_Model_Klinik $klinik) {
> ... }
>
> The realURL mapping looks like this:
> $TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT'] = array(
> 'init' => array(
> 'enableCHashCache' => '1',
> 'appendMissingSlash' => 'ifNotFile,redirect',
> 'adminJumpToBackend' => '1',
> 'enableUrlDecodeCache' => '1',
> 'enableUrlEncodeCache' => '1',
> 'emptyUrlReturnValue' => '/',
> 'respectSimulateStaticURLs' => '1',
> 'disableErrorLog' => '1',
> ),
> 'pagePath' => array(
> 'type' => 'user',
> 'userFunc' =>
> 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
> 'spaceCharacter' => '-',
> 'segTitleFieldList' => 'tx_realurl_pathsegment,title',
> 'languageGetVar' => 'L',
> 'rootpage_id' => '1',
> ),
> 'fileName' => array(
> 'defaultToHTMLsuffixOnPrev' => '0',
> 'acceptHTMLsuffix' => '1',
> 'index' => array(
> 'print' => array(
> 'keyValues' => array(
> 'type' => '98',
> ),
> ),
> 'bericht.pdf' => array(
> 'keyValues' => array(
> 'type' => '1315357927',
> ),
> ),
> ),
> ),
> 'preVars' => array(
> '0' => array(
> 'GETvar' => 'L',
> 'valueMap' => array(
> 'it' => '2',
> 'fr' => '1',
> ),
> 'noMatch' => 'bypass',
> ),
> ),
> 'postVarSets' => array(
> '_DEFAULT' => array(
> 'spital' => array(
> 0 => array(
> 'GETvar' => 'tx_hplusinfo_fe_spitalinfo[klinik]',
> ),
> ),
> 'action' => array(
> 0 => array(
> 'GETvar' => 'tx_hplusinfo_fe_spitalinfo[controller]',
> 'noMatch' => 'bypass',
> ),
> 1 => array(
> 'GETvar' => 'tx_hplusinfo_fe_spitalinfo[action]',
> 'noMatch' => 'bypass',
> ),
> ),
> ),
> ),
> ),
> );
>
>
> With this a URL looks like http://www.defaultdom.ch/results/spital/233/
> (<- tx_hplusinfo_fe_spitalinfo[klinik]=233)
>
> Now when we open this link in a browser for the first time (cache
> cleared) everything seams right. But after chaning the objects uid, e.g.
> http://www.defaultdom.ch/results/spital/45/
> some content of the page (spitalinfoAction) is still the cached version
> from tx_hplusinfo_fe_spitalinfo[klinik]=233, other parts (infoAction)
> are updated correctly to tx_hplusinfo_fe_spitalinfo[klinik]=45
>
> When i set 'enableCHashCache' = 0 then it works as long as the CHash is
> appended to the URL... Without CHash i get the last cached version for
> the spitalinfoAction view parts of the page.
>
> Before switching to multi language URL
> $TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT'] was looking
> absolutely the same.
> And my extension was working properly with CHashCache.
> $TYPO3_CONF_VARS['EXTCONF']['realurl'] = array(
> '_DEFAULT' => array(
> 'init' => array(
> 'enableCHashCache' => '1',
> 'appendMissingSlash' => 'ifNotFile,redirect',
> 'adminJumpToBackend' => '1',
> 'enableUrlDecodeCache' => '1',
> 'enableUrlEncodeCache' => '1',
> 'emptyUrlReturnValue' => '/',
> 'respectSimulateStaticURLs' => '1',
> 'disableErrorLog' => '1',
> ),
> 'pagePath' => array(
> 'type' => 'user',
> 'userFunc' =>
> 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
> 'spaceCharacter' => '-',
> 'segTitleFieldList' => 'tx_realurl_pathsegment,title',
> 'languageGetVar' => 'L',
> 'rootpage_id' => '1',
> ),
> 'fileName' => array(
> 'defaultToHTMLsuffixOnPrev' => '0',
> 'acceptHTMLsuffix' => '1',
> 'index' => array(
> 'print' => array(
> 'keyValues' => array(
> 'type' => '98',
> ),
> ),
> 'bericht.pdf' => array(
> 'keyValues' => array(
> 'type' => '1315357927',
> ),
> ),
> ),
> ),
> 'preVars' => array(
> '0' => array(
> 'GETvar' => 'L',
> 'valueMap' => array(
> 'it' => '2',
> 'fr' => '1',
> ),
> 'noMatch' => 'bypass',
> ),
> ),
> 'postVarSets' => array(
> '_DEFAULT' => array(
> 'spital' => array(
> 0 => array(
> 'GETvar' => 'tx_hplusinfo_fe_spitalinfo[klinik]',
> ),
> ),
> 'action' => array(
> 0 => array(
> 'GETvar' => 'tx_hplusinfo_fe_spitalinfo[controller]',
> 'noMatch' => 'bypass',
> ),
> 1 => array(
> 'GETvar' => 'tx_hplusinfo_fe_spitalinfo[action]',
> 'noMatch' => 'bypass',
> ),
> ),
> ),
> ),
> ),
> );
>
>
>
> I'm totally screwed - any help would be much appreciated!
>
> Cheers,
> T

-- 
Tolleiv Nietsch
TYPO3 Core Developer


TYPO3 .... inspiring people to share!
Get involved: typo3.org





More information about the TYPO3-dev mailing list