Caching und mehr
1. EXT: staticfilecache
Die Extension ist einfach installiert. Hauptsächlich ist die Apache bzw. nginx Konfiguration anzupassen.
Hier ist es genau beschrieben: https://docs.typo3.org/p/lochmueller/staticfilecache/main/en-us/
Aufwändiger ist es möglicherweise alle USER_INT Objekte in USER Objekte zu ändern, damit die Seiten gecacht werden können.
2. EXT: seo
Diese Systemextension hat einige Vorzüge. U.a. kann damit recht einfach eine XML-Sitemap der kompletten Seite erstellt werden. Mit folgender Beispielkonfiguration werden 4 Sitemaps erstellt:
- Für die Seiten (pages)
- Für die Schulungen (Event-Datensätze gespeichert in Tabelle tx_sfeventmgt_domain_model_event)
- Für die Tipps News (News-Datensätze gespeichert in Tabelle tx_news_domain_model_news)
- Für die Referenzen News (News-Datensätze gespeichert in Tabelle tx_news_domain_model_news)
# Pages, events and news in sitemap
plugin.tx_seo.config {
xmlSitemap {
sitemaps {
#exclude pages (e.g. 404 error page and detail pages without parameter)
pages.config.excludePagesRecursive = 4,5,6,21,23,31
schulung {
provider = TYPO3\CMS\Seo\XmlSitemap\RecordsXmlSitemapDataProvider
config {
table = tx_sfeventmgt_domain_model_event
sortField = tstamp
lastModifiedField = tstamp
pid = 2
recursive = 1
url {
pageId = 4
fieldToParameterMap {
uid = tx_sfeventmgt_pieventdetail[event]
}
additionalGetParameters {
tx_sfeventmgt_pieventdetail {
controller = Event
action = detail
}
}
}
}
}
tipps {
provider = GeorgRinger\News\Seo\NewsXmlSitemapDataProvider
config {
table = tx_news_domain_model_news
additionalWhere =
sortField = sorting
lastModifiedField = tstamp
changeFreqField = sitemap_changefreq
priorityField = sitemap_priority
pid = 19
recursive = 0
url {
pageId = 21
#useCategorySinglePid = 1
fieldToParameterMap {
uid = tx_news_pi1[news]
}
additionalGetParameters {
tx_news_pi1.controller = News
tx_news_pi1.action = detail
}
useCacheHash = 1
}
}
}
references < .tipps
references.config.pid = 22
references.config.url.pageId = 23
}
}
}
sitemap.xml
Damit die Sitemap unter www.example.tld/sitemap.xml aufgerufen werden kann, kann die Seiten-Konfiguration über die config.yaml Datei angepasst werden.
- In composer Installationen findet sich diese unter config/sites/siteid/config.yaml
- In nicht-composer Installationen unter typo3conf/sites/siteid/config.yaml
routeEnhancers:
PageTypeSuffix:
type: PageType
default: /
index: /
map:
/: 0
sitemap.xml: 1533906435
3. EXT: sitecrawler
Mittels der sitecrawler Extension kann jede einzelne Seite der XML-Sitemap versteckt aufgerufen werden, um den Seiten-Cache neu aufzubauen.
Die Extension ist schnell installiert. Das aufwändigste ist es den Cronjob zu konfigurieren.
Insbesondere ist darauf zu achten, dass die PHP Version des Cronjobs-Interfaces mit der PHP Version der TYPO3 Installation übereinstimmt.
Damit die TYPO3 Caches nächtlich geleert werden können, kann folgende TYPO3-Konfiguration verwendet werden:
config.cache_clearAtMidnight = 1
Update
Ich habe festgestellt, dass mit obiger Lösung unter
- TYPO3 v12.4.3
- staticfilecache
- sitecrawler
nicht alle Seiten nächtlich neu gecacht wurden.
Außerdem ist der direkte Aufruf des sitecrawlers per CronJob nicht die beste Idee. Wenn er über den scheduler eingerichtet wird, dann haben Backend-Benutzer eine bessere Kontrolle hierüber.
Meine neue Lösung:
- Installation der scheduler System-Extension
- Einrichtung des scheduler CronJobs, der alle 5 Minuten ausgeführt wird
- Erstellung der scheduler Aufgaben staticfilecache:flushCash und sitecrawler:crawl
zu 1.: Installation der scheduler System-Extension
In klassicher Installation kann die Extension scheduler direkt im TYPO3 Backend über “Erweiterungen” installiert werden.
In Composer-Installation gelingt das mit folgendem CLI-Befehl. Danach noch über /typo3/install.php die Datenbankfelder aktualiseren, da das TYPO3 Backend / “Wartung” aufgrund des Datenbankfehlers nicht direkt erreichbar ist.
composer require typo3/cms-scheduler
zu 2.: Einrichtung des scheduler CronJobs, der alle 5 Minuten ausgeführt wird
In Composer-Installationen sieht der Aufruf in etwa so aus
php machwert/typo3cms/vendor/bin/typo3 scheduler:run
Ggf. muss sichergestellt werden, dass die korrekte PHP Version benutzt wird.
In meinem Fall (netcup als Hoster) sieht das so aus:
/usr/local/php81/bin/php machwert/typo3cms/vendor/bin/typo3 scheduler:run
Die Ausführung im Cron-Stil habe ich auf alle 5 Minuten wie folgt gesetzt:
*/5 * * * *
Im netcup Customer-Control-Panel sieht das so aus:
zu 3.: Erstellung der scheduler Aufgaben staticfilecache:flushCash und sitecrawler:crawl
Die folgende Konfiguration im TYPOScript kann damit wieder entfernt:
config.cache_clearAtMidnight = 1
Erstellt am: (aktualisiert am: )