Which platform is best for the admin panel

For even more website performance: analyze INT objects in the admin panel of TYPO3 10

In every new TYPO3 version there are new features to discover that make working with TYPO3 easier. In this blog article I would like to introduce you to a feature that might not catch your eye when looking through the changelogs, but is really interesting.

Feature: # 88441 - Show configuration of USER_INT objects in adminpanelA new panel “USER_INT” is introduced in the info module of the admin panel, which lists the basic configuration of each USER_INT present on the current page.

TYPO3 changelog & nbsp;

If you don't know the change, you might even miss the new field in the admin panel.

Why is this feature so interesting?

With our new tariffs we have a very pay special attention to the topic performance placed. But even with a lot of power under the hood, one side may not be fast enough. In such cases you should take a look at the configuration of the application to find possible blockers. When it comes to a TYPO3 installation, I use that Admin panel. It shows me, among other things. the Page generation time on the server. In contrast to "external" measurements of the TTFB (time-to-first-byte), I can ignore all network-side influences. Whether z. B. My WLAN connection is currently heavily used, does not matter for the measurement on the server. If there are large deviations between the page generation time in the admin panel and the measured TTFB, I will of course take a closer look.

Butter with the fish - how do I use it?

A TYPO3 10.4.0 installation serves as the basis, in addition to the Introduction-Package and the Bootstrap-Package a small test extension installed by me. This only serves to System artificially slowing down. With the help of the admin panel we will "find" this extension and see how exactly it slows down the page.

To use the admin panel, you only have to use the Activate the system extension "adminpanel" in the extension manager and write a line TypoScript into the setup:

Incidentally, you do not need to make this entry for the Introduction Package, as it has already been set. In the front end of our site, a small icon for the admin panel now appears at the bottom right:

Danger: So that the admin panel can be displayed, you have to be logged in to the backend and access the frontend via the same domain. One click on the icon and you will see how long it took TYPO3 to generate the page. In this case 1870ms:

Of course that is too much! But it was the frontend's first call. So all possible caches still had to be generated. Maybe a second call will help?

Unfortunately only to a limited extent. At 1539ms we are a bit faster, but not really fast. Perhaps the page cache is deactivated with config.no_cache = 1 or something similar? To find out, let's expand the Info tab:

That doesn't seem to be the case either. According to TYPO3, the page is basically cached first. However, this does not mean that content is not still being generated. With COA_INT and USER_INT I have the option of removing certain elements from caching. TYPO3 then generates the rest of the content and stores it in the cache, but the _INT elements are only inserted as placeholders in the cache. When they are called up, they are completely regenerated - with every call!

I can also see in the admin panel that there are such elements on the page. We find directly under the information on the page cache "Count of USER_INT objects" with the value 1. Up to this point the information content is still identical to TYPO3 9 LTS. From here I would have to z. For example, use the TypoScript Object Browser to search for all * _INT objects in order to find the one in between that is actually integrated on the page. In TYPO3 10 LTS I can take a shortcut by going to the USER_INT tab above:

Admittedly, when I wrote my minimalist test extension, I renounced all creativity and used very telling terms. In the real world, I probably won't know what's going on in the background right here. But: I know which function is called and can quickly search for it. If you have an IDE (Integrated Development Environment) like PHPStorm you will probably find the functions there quickest. Since I usually work directly on the server when analyzing customer systems, here is my route via a short grep:

The content of setup.typoscript is manageable:

Here I simply include a USER_INT object on the page that calls the delayAndPrintTime function. This part could also be found via the TypoScript Object Browser. To do this, we call up the template module in the backend, go to the page to be tested (in my case the root page, since I didn't measure a subpage with my own template), select the TypoScript object browser and search for “_INT” in the setup ":

We see: There are two USER_INT objects. We should usually keep our hands off the fluidAjaxWidgetResponse - as with any other Ajax response. These are intentionally not cached. It looks different with our page.100 element: Here we should ask ourselves the question, whether this content element really has to be delivered uncached. If this is not the case, we can change it. We make a USER object out of a USER_INT object, and a COA object out of a COA_INT.

Let's do that for our specific element by writing the following TypoScript snippet in our setup in the backend: page.100 = USER

In the long term it would be clean for my test extension if we adapt the setup.typoscript.

No matter which of the two paths we choose, in the end our side should be faster. It should be noted here that the first call after the change will still be slow. The cache must first be built. The second is then incredibly fast. ;-)

Incidentally, the delayAndPrintTime is really only waited for a 1.5 second usleep and then the server time is output:

So as soon as I turn page.100 into a USER object, the time on the page would no longer be updated. From a purely logical point of view, the element should in fact not be cached. However, other factors stand in the way:

1. The display of the time is no added value for a website visitor.

2. The output is even hidden (white text on a white background). So I am processing data that the user has nothing of at the end of the day.

3. I am doing an unnecessary operation (usleep) that has no relevance for the actual function (output of the time).

Using these criteria, you should check in each individual case whether the implementation of the uncached functions is really necessary. Alternatively, you could reload the element via Ajax. This would be significantly better for the user experience, as the page is displayed very quickly at first and only a single element comes later.

Speaking of which: In TYPO3 10, lazy loading for images is now active by default for fluid-styled content. I think I'll write a blog article about this ... :-)

Tip: You can also use this function under TYPO3 9 LTS by installing the following extension: https://github.com/IndyIndyIndy/adminpanel_int

TYPO3 hosting as you wish

Would you like more of this TYPO3 expert knowledge? Would you also like free ELTS versions or cool TYPO3 extensions? You can get this and much more from Mittwald. We have been TYPO3 hosters from the very beginning. Convince yourself and test your TYPO3 for 30 days free of charge.

Try TYPO3 hosting for free
Hannes is part of the Knoffhoff team, the 3rd level support at Mittwald. Here he enjoys doing something good for our customers. For example, by making thousands of customers' pages faster with one line of code. Another passion is baking. From his point of view, one should know the differences in the moisture content of various types of bread just as well as the configuration options from the TYPO3 Install Tool: down to the smallest detail!