Adaptable caching concept
The TYPO3 concept not only relies on modular construction, with strict separation between the T3 Core and any extensions, but also on an intelligent and consequential caching concept when delivering a website. If properly set up, this caching concept ensures the creation and running of stable multisite installation, while significantly increasing performance.
Dynamic content reduces performance
In general, delivering a dynamic TYPO3 web page is a calculation-intensive process. The page presentation is considerably influenced by the available TypoScript instructions in templates and the way these are collated in multi-dimensional PHP arrays. By using these PHP arrays, complex tree structures are configured and constructed from PHP objects. It is the sum of these PHP objects which finally renders the outgoing HTML page.
These calculation-intensive processes are carried out every time the same page is loaded, using up a great deal of working memory and CPU capacity. As a result, performance suffers significantly. That's why, once they have been created in HTML code, TYPO3 provides for the storage of such unchanging, static pages in the databank, from where they can be instantly recalled in their finished form, without launching the entire editing process each time.
Such caching (the storage of an already delivered pages or their content) has performance advantages for static content, but is not suitable for pages with dynamically created content, such as user input fields or system generated calculation results. In addition, if there is a content change in the Backend, the cache must be refreshed, as otherwise the old content would be called up again.
This is why it is advisable, during the conception phase, to think carefully about which caching options are best suited to which web page.
The TYPO3 caching concept
The TYPO3 caching concept envisages three possibilities
- Server-side caching in the databank - normal TYPO3 caching
In TYPO3, the caching of static pages and page sections as references in the PHP database is a standard active default.
- Server-side caching in the file system
Another option is to cache static pages as genuine HTML files in the server's file system. These HTML pages will then be directly delivered, updated or deleted by the web server, the TYPO3 system command is not required at all for such pages.
- Client-side caching on the client browser via the "Cache Control Header"
Web pages can also be cached outside the server. By using the "Cache Control Header", an HTTP/1.1 protocol entry, one can define, whether and for how long a webpage may be temporarily cached in proxy or in the browser cache on the client-side. In this way, pages that the user needs often can be immediately loaded from the temporary cache, without TYPO3 having to render them or the server needing to be called on. In this way the user surfs offline. As standard, no Cache Control Header is dispatched in these cases, although in TYPO3-Version 3.8.0 these can be automatically set by the TypoScript configuration "config.sendCacheHeaders = 1".
This add-on enables significant performance increases. However, it is only really suitable for static pages that are entirely devoid of dynamic content which, if using this method, would not be shown at all.
- "Re-mix" the cache methods
In addition the different cache methods described here can all be used in an individual mix. In this way, depending on the specific demands of a particular page or content in TYPO3, different caching concepts can be created in order to optimize performance gains in each case.