[TYPO3-mvc] Extbase Cache/CHash(?) issue with realURL and Multi Language Domains
g4-lisz at tonarchiv.ch
g4-lisz at tonarchiv.ch
Fri Jun 8 15:23:48 CEST 2012
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 = : 
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
More information about the TYPO3-project-typo3v4mvc
mailing list