[TYPO3-german] Caching von virtuellen URIs beim realURL-Mapping von GET Variablen auf Plugin (Extbase/REST)

g4-lisz at tonarchiv.ch g4-lisz at tonarchiv.ch
Wed Sep 18 21:35:19 CEST 2013


Hallo Stephan,

vielen Dank für die ausführliche Erklärung! Dieses Wissen hilft mir auch
bei anderen Projekte weiter...
Ich werde also eine Sitemap erzeugen.

Grüße,
Till

On 09/18/2013 01:39 PM, Stephan Schuler wrote:
> Hallo Till.
>
>
> Dein Problem ist, dass Du die Seiten nicht via TypoLink generierst sondern aus dem Frontend heraus.
>
>
> RealURL verbirgt vor dir, dass es einen cHash-Parameter gibt. Das "c" steht für "cache" und ist genau dafür gedacht.
>
>
> Für das Caching einer Seite ist die "hashBase" zuständig, die sich (jedenfalls bis 4.7, wie das mit 6.x aussieht kann ich dir mangels Installation gerade nicht nachschlagen; ich vermute aber ähnlich) aus den Paramter "id", "type", "gr_list", "MP", "domainStartPage" und "cHash_array" zusammensetzt.
>
> Die Parameter "id" und "type" sind hoffentlich bekannte GET-Parameter.
> Der Parameter "MP" ist "MountPoints", wird aber so gut wie nie verwendet. Hängt mit "id" zusammen.
> Der Parameter "gr_list" sind die FE-Benutzergruppen deines FE-Users.
> Der Parameter "cHash_array" ist ein Array aller GET-Parameter, die nicht als "nicht in den cHash aufnehme" markiert sind.
>
> Der Parameter "cHash_array" wird grundsätzlich überhaupt nur dann gefüllt, wenn zusätzlich der GET-Parameter "cHash" existiert.
>
> Das heißt, dass das Anhängen von GET-Parametern ohne Angabe des cHash den gleichen Cache-Identifier erzeugt, wie die Seite ohne jegliche GET-Parameter. Deshalb wird die Seite immer "parameterlos" gecacht.
>
> Um auch die GET-Parameter mit in den Cache aufnehmen zu können, muss der cHash-Parameter mit an die URL.
>
> Wenn der cHash-Parameter der an der URL hängt nicht mit dem überein stimmt den TYPO3 intern selbst anhand der hashBase errechnen kann, wird je nach TYPO3-Setup entweder die Seite ungecacht ausgeliefert (frühere Standardeinstellung bis einschließlich 4.7) oder aber die 404-Seite erzeugt (Standardeinstellung seit 6.0, der Config-Parameter heißt "pageNotFoundOnCHashError").
>
> Du kannst den cHash nicht clientseitig erzeugen. Willst du nicht, und darfst du nicht. Das ist sein Sinn: Dass ihn kein Client erraten und damit den Server dosen kann. Gigabyteweise Cacheeinträge nur weil ich als Angreifer beliebige GET-Parameter an die URL hänge.
>
> Bei allen von TYPO3 erzeugten URLs bei denen GET-Parameter (abgesehen von ID und L) existieren, hängt auf alle Fälle der cHash-Parameter an der URL. Die siehst du halt normalerweise nicht, weil RealURL die weg-maskiert und in den RealURL-Cache schreibt anstatt sie zu veröffentlichen. Um genau zu sein steht der cHash nicht an der URL im RealURL-Encode- oder Decode-Cache. Dort stehen nur URLs mit GET-Paramter ohne cHash. Der cHash steht in einem gesonderten cHash-Cache. Und wenn er da nicht steht, errechnet RealURL den cHash selbst anhand der vorhandenen encodierten GET-Variablen sobald eine URL im Encode-Cache gefunden wird. Aber unabhängig vom genauen Verlauf innerhalb von RealURL ist sicher: Wenn RealURL den Encode-Cache nutzt (und nur dann) um eine URL zu encodieren, stellt RealURL auch sicher, dass der cHash korrekt und passend zum aktuellen Request im TSFE registriert wird.
>
> Der einzige wirklich brauchbare Ausweg den ich sehe ist, wenn du Sitemap-Seiten baust, die die von dir gewünschten URLs enthalten. Dann erzeugt RealURL einen URL-Cache-Eintrag. Dadurch ist beim decoding der URL der cHash bekannt. Und dann hast du individuelle Cache-Identifier für URLs mit GET-Parametern.
>
> Sobald du die Erzeugung der URLs durch TypoLink vermeidest, hast du entweder kein Caching oder falsches.
>
>
> Gruß,
> Stephan.
>
>
> Stephan Schuler
> Web-Entwickler
>
> Telefon: +49 (911) 539909 - 0
> E-Mail: Stephan.Schuler at netlogix.de
> Website: media.netlogix.de
>
>
>
> --
> netlogix GmbH & Co. KG
> IT-Services | IT-Training | Media
> Neuwieder Straße 10 | 90411 Nürnberg
> Telefon: +49 (911) 539909 - 0 | Fax: +49 (911) 539909 - 99
> E-Mail: info at netlogix.de | Internet: http://www.netlogix.de
>
> netlogix GmbH & Co. KG ist eingetragen am Amtsgericht Nürnberg (HRA 13338)
> Persönlich haftende Gesellschafterin: netlogix Verwaltungs GmbH (HRB 20634)
> Umsatzsteuer-Identifikationsnummer: DE 233472254
> Geschäftsführer: Stefan Buchta, Matthias Schmidt
>
>
>
> -----Ursprüngliche Nachricht-----
> Von: typo3-german-bounces at lists.typo3.org [mailto:typo3-german-bounces at lists.typo3.org] Im Auftrag von g4-lisz at tonarchiv.ch
> Gesendet: Mittwoch, 18. September 2013 11:28
> An: typo3-german at lists.typo3.org
> Betreff: [TYPO3-german] Caching von virtuellen URIs beim realURL-Mapping von GET Variablen auf Plugin (Extbase/REST)
>
> Hallo allerseits,
>
> ich habe versucht, via realURL und Extbase einen REST-Webservice zu kreieren. D.h. meine Extension bedient URLs wie http://api.meinedomain.de/message/ABCDF/2/, die via realURL auf eine Seite mit den entspr. GET-Variablen gemapt werden
> (http://api.meinedomain.de/index.pgp?id=15&tx_stdapp_api[identifier]=ABCDF&tx_stdapp_api[type]=2
>
> Diese URIs sind zustandslos, d.h.
> http://api.meinedomain.de/message/ABCDF/2/ liefert immer den gleichen Inhalt. Daher bietet es sich an, diesen Inhalt zu cachen.
> Aus der Sicht von Typo3 steht hinter allen Anfragen aber  immer die selbe Seite http://api.meinedomain.de/index.pgp?id=15. Daher erhalte ich mit aktiviertem Caching für /message/ABCDF/2/, /message/ABCDF/3/ usw.
> immer den gleichen Inhalt.  Wie kann ich T3 dazu überreden, diese URIs als unterschiedliche Seiten zu sehen und den Inhalt zu cachen?
>
> Grüße,
> Till
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german



More information about the TYPO3-german mailing list