2016-11-23 5 views
0

Ich habe eine Verlängerung mit Extbase/Fluid geschrieben und diese Erweiterung hat ein Plugin:TYPO3-Plugin ohne Caching

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
    'MyVendor.' . $_EXTKEY, 
    'Pi1', 
    array(
     'MyController' => 'list' 
    ), 
    // non-cacheable actions 
    array(
     'MyController' => 'list' 
    ) 
); 

Aber wenn Sie einen Link

<f:link.action arguments="{foo: 'bar'}">...</f:link.action> 

die resultierende URL hat einen cHash Parameter zu schaffen :

http://localhost/mypage/?tx_myext_pi1[foo]=bar&cHash=d1768a40d9370f7a8d327043da156a05 

Warum? Ich habe dieses Plugin als "nicht im Cache" definiert, daher sollte es keinen cHash-Parameter geben.

Die TYPO3-Version ist 7.6.12.

Antwort

2

Der Parameter cHash wird nicht zum Zwischenspeichern Ihres Inhalts verwendet, sondern zum Zwischenspeichern der Argumente in der URL, sodass nichts damit zu tun hat, dass die Aktion selbst zwischengespeichert wird.

Wenn Ihre Aktion zwischengespeichert ist und Sie keine Änderungen sehen, wenn Sie die Vorlage oder den Code ändern, werden möglicherweise die Cacheeinstellungen der Aktion geändert, und die Localconf wird weiterhin zwischengespeichert. In diesem Fall müssen Sie den System-Cache im Installationsprogramm löschen oder Ihre Erweiterung deinstallieren und installieren.

1

Um den cHash Parameter entfernen Sie die f:link Viewhelper Argument noCacheHash verwenden:

<f:link.action arguments="{foo: 'bar'}" noCacheHash="true">...</f:link.action> 

Die cHash verwendet wird, nicht nur für Sie Plugin. Auch für den Rest Ihrer Seite (Layout, etc) setzt TYPO3 immer einen cHash, wenn Sie ein Argument haben.

Wenn Sie RealURL verwenden, verschwindet der cHash, wenn Sie alle Argumente in der URL zugeordnet haben.

+0

Das Problem ist nicht nur das cHash, wenn der Inhalt des Plugins nicht zwischengespeichert werden soll. Ich kenne "noCacheHash", aber ich möchte es nicht verwenden, ich möchte es richtig machen/Ich möchte, dass Extbase/Fluid es richtig macht. Und ich kann "noCacheHash" nicht für die Paginierung meines Plugin-Inhalts verwenden (f: widget.paginate), daher haben diese Links auch den cHash-Parameter. – Sven

+0

Warum sollte "noCacheHash" ein "falscher" Weg sein? Das Behavior ist, immer ein cHash hinzuzufügen, wenn ein Parameter in der URL gesetzt ist. In Ihrer Paginationsvorlage können Sie auch das Argument "noCacheHash" setzen. Und natürlich: Wenn Sie eine Erweiterung verwenden, um "nettere URLs" zu erstellen, können Sie den cHash entfernen, indem Sie alle Parameter korrekt zuordnen. Wenn Sie keine "netten URLs" haben, ist das nicht wichtig für ein oder mehrere Parameter, oder? –

+0

Ich schaute in der Quelle des URI-Builders, so dass ich sagen kann: cHash wird immer hinzugefügt, wenn "noCacheHash" nicht gesetzt ist und ein Parameter zur URL hinzugefügt wird. Es spielt also keine Rolle, ob Sie nicht cachefähige Aktionen verwenden oder nicht. –