Links generieren und auflösen mit TYPO3
TYPO3 kümmert sich dabei also um zwei Dinge:
1. Generierung eines Links aus einem Plugin mit eigenen GET — Parametern
Wenn eine URL zu einer Seite mit GET — Parametern gebaut wird, wird eine Signatur mit dem zusätzlichen „cHash“ GET — Parameter angehängt. Damit weiß TYPO3, dass es beim Auflösen der URL auf eine Cache — Variante der Seite zurückgreifen kann.
2. Auflösen von URLs mit zusätzlichen GET — Parametern
Wenn eine Seite mit zusätzlichen GET — Parametern aufgerurfen wird, prüft TYPO3 ob ein „cHash“ Parameter in der URL vorhanden ist, und berechnet die Zusammenfassung der anderen GET — Parameter erneut. Wenn die generierte Prüfsumme dieselbe ist wie der Wert aus der angefragten URL, fragt TYPO3 im Cache nach der Variante der Seite. Falls diese nicht vorhanden ist, oder bereits abgelaufen ist, baut TYPO3 diese Variante und speichert sie im Cache.
Wenn die berechnete Prüfsumme mit dem GET — Parameter nicht übereinstimmt, oder wenn es gar keinen GET — Parameter namens „cHash“ gibt, aber zusätzliche GET — Parameter, gibt TYPO3 eine Fehlerseite zurück. Schließlich gibt es diese Variante der Seite auch nicht, weil es keine gültige Variante der Seite ist. Wird TYPO3 etwas weniger strikt konfiguriert, kann statt einer Fehlerseite auch der ungecachte Content der Seite ausgegeben werden. Ein Cache-Eintrag wird in diesem Fall natürlich auch nicht angelegt, das neugenerieren des Inhalts wird also forciert. Dies wird erreicht, wenn die globale Option „pageNotFoundOnCHashError“ auf false gestellt wird. Dies kann zu erhöhten Ladezeiten führen.
Wir fassen zusammen: Der cHash Mechanismus ist eine geniale Sache weil es TYPO3 erlaubt eine Vielzahl von Varianten einer einzigen Seite im Cache abzulegen und wieder zu laden! Die „no_cache“ Option oder „nicht — cachebare Objekte“ können das Cache — Varianten — Feature nicht nutzen, weil sie für jeden Besucher neu berechnet werden. Aber für eine Listen-Ansicht und eine Detail-Ansicht einer Extension ist „cHash“ wie gemacht.
In der Vergangenheit haben Extensions wie RealURL und CoolURI versucht, den cHash Parameter einer URL in einer Zwischentabelle zu speichern um den Parameter aus der URL zu bekommen — häufig war der Wunsch nach „schönen URLs“ da, oder weil fälschlicherweise der Eindruck bestand, dass dies für Suchmaschinen Nachteile hätte. Letzters ist jedoch ein Trugschluss: Suchmaschinen interessieren sich nicht für schöne GET — Parameter. Zusätzlich war es für TYPO3–Integratoren nie offensichtlich wann die Option „useCacheHash“ in TypoLink (via TypoScript) oder FluidViewHelpern (in Fluid Templates) gesetzt werden sollte.