TYPO3 DeveloperDays 2017 Live – Day 4

This is a live blog from the TYPO3 Developer Days in Malmö (Sweden). This is the page for friday, Juli 14th 2017.

If you like the live blog, please do not hesitate to share the URL. Thank you! At the end of the page there are some social media links, you can use to share.

Links to all days: 

I hope you enjoy reading. If you have feedback, just let me know.

Marcus Schwemer July 16, 201710:29 AM

Hello … good morning from Malmö for the last day of the TYPO3 Developer Days.

Marcus Schwemer July 16, 201710:29 AM

Sorry for being late. It was the second very short night, though 😉

Marcus Schwemer July 16, 201710:37 AM

I am sitting now in the session of Susi Moog and Matthias Schreiber about performance optimizing wth blackfire.io.

Marcus Schwemer July 16, 201710:38 AM

Using a lot TypoScript conditions in TYPO3 results in an exponential growth if the caching table.

Marcus Schwemer July 16, 201710:41 AM

They are doing a live demo of blackfire.io, a online tool to measure performance and top find bottle necks.

Marcus Schwemer July 16, 201710:41 AM

It is doing basically the same as Xdebug / Cachegrind, but with a much nicer UI.

Marcus Schwemer July 16, 201710:43 AM

The core team defined rules regarding TYPO3, which are applied to the tool.

Marcus Schwemer July 16, 201710:45 AM

You can run blackfire.io not only in the browser, but also a command line agent.

Marcus Schwemer July 16, 201710:50 AM

It is possible to compare two rule sets. F.e. with eid request and xdebug and one time without. Result: Disable xdebug on production systems.

Marcus Schwemer July 16, 201710:52 AM

* Adds a header to the http request (or ENV var on CLI)
* PHP-extension checks signature

Marcus Schwemer July 16, 201710:53 AM

Performance tipps:

Cache what you can. Benni Mack will dive into this topic in the next section.

Marcus Schwemer July 16, 201710:54 AM

“Everything over 5 sek is static content”

* Consider Cache / Hit ratio

Marcus Schwemer July 16, 201710:56 AM

* CDN the sh**t out of your site
* Optimize your usergroups and cominations. The order of the usergroups matter.

Marcus Schwemer July 16, 201710:57 AM

* Screw modularity, whenever you => raises complexity

Marcus Schwemer July 16, 201711:00 AM

* Avoid (TypoScript) conditions => They are adding complexity and making things slower. Often it is better to set an ext_template in the database

Marcus Schwemer July 16, 201711:00 AM

* Remove all indexes from mySQL and set them individually for your project.

Marcus Schwemer July 16, 201711:01 AM

Basic version of blackfire.io is free, but all the nice things are in paid plans.

Marcus Schwemer July 16, 201711:04 AM

Susi and Matthes on stage

Marcus Schwemer July 16, 201711:06 AM

Q&A

Q: Is is possible to run on a managed server?

A: The provider must in install the apache module.

Marcus Schwemer July 16, 201711:07 AM

For frontend perfomance analysis Google has a tool called lighthouse

Marcus Schwemer July 16, 201711:09 AM

Now there is the first break. I will be back the talk of Benni Mack regarding caching at 11:45 a.m.

Marcus Schwemer July 16, 201711:10 AM

BTW: There are crazy buildings in Malmö. Here a pricture from yesterday evening:

Marcus Schwemer July 16, 201711:47 AM

So we are back with the last session about caching.

Marcus Schwemer July 16, 201711:50 AM

How to pronounce caching: “Käsch” like the cash, nothing else

Marcus Schwemer July 16, 201711:51 AM

Marcus Schwemer July 16, 201711:53 AM

OH: “I love no_cache=1, everything works”

Marcus Schwemer July 16, 201711:54 AM

Goal is to serve content faster, more perfomant with less CPU time, memory, IO

But the hard thing is to get it under control

Marcus Schwemer July 16, 201711:55 AM

Caches are everywhere. CDN, Browser, php, Database … just to name a few

Marcus Schwemer July 16, 201711:57 AM

The TYPO3 caching framework is just a small part of all caches.

Marcus Schwemer July 16, 201711:58 AM

CDNs are distributing static content around the world.

Marcus Schwemer July 16, 201711:58 AM

Cache invalidation is different from cache clearing. It’s telling the server that an asset is invalid

Marcus Schwemer July 16, 201712:00 PM

Next the step of caching is the browser cache.

Marcus Schwemer July 16, 201712:01 PM

There is a second browser cache mechanism: the ETag. If something changes a new ETag is generated.

Marcus Schwemer July 16, 201712:03 PM

It is possible to deliver information only once with

Cache-Control: Private
Pragma: no-cache

Marcus Schwemer July 16, 201712:04 PM

There is no solution, if the timing was wrong. You cannot invalidate the browser cache.

Marcus Schwemer July 16, 201712:07 PM

Clearing Browser Cache is not an option. But TYPO3 can add the timestamp to an asset, which is update whenever a asset is updated. So it is a new asset for the browser and loaded like a new file

Marcus Schwemer July 16, 201712:07 PM

Now we have look at TYPO3 caching: The page cache

Marcus Schwemer July 16, 201712:09 PM

The “First Hit” is when TYPO3 has to do everything. The cached hit is delivered subsequently

Marcus Schwemer July 16, 201712:09 PM

The 1st is approx. 10 times slower than a cached hit.

Marcus Schwemer July 16, 201712:12 PM

Every variant of the page gets a seperate cache entry … also true for parameters like “utm-source” et al.

Marcus Schwemer July 16, 201712:14 PM

It’s possible to exclude parameters from cHash calculation, to avoid cache poioning

Marcus Schwemer July 16, 201712:15 PM

You do not want to use “no_cache=1”! It is possible to deactivate in TYPO3

Marcus Schwemer July 16, 201712:15 PM

But what about which never should never be cached like exchange data?

Marcus Schwemer July 16, 201712:17 PM

Analyse what should be cached…

Marcus Schwemer July 16, 201712:20 PM

If you have parts, that must not be cached, like a login => load it via ajax after generating the page

Marcus Schwemer July 16, 201712:23 PM

Another concept for caching are edge-side includes. TYPO3 is prepared, but not shipping it by default.

Marcus Schwemer July 16, 201712:24 PM

The caching framework does not solve all your problems.

Marcus Schwemer July 16, 201712:25 PM

* cache_core => compiled TCA etc.
* cache_hash => “dump everything in there”

Marcus Schwemer July 16, 201712:27 PM

* cache_pages => cHash related stuff
* cache_pagesection => complete compiled typoscript
* cache_rootline => for menus; access data, groups, time, for realurl

Marcus Schwemer July 16, 201712:29 PM

* fluid_template cache
* extbase_object => domain model information
* extbase_reflection => for injects et.al.

Marcus Schwemer July 16, 201712:31 PM

Caching backends are APC (in memory), database (lokal), filesystem (lokal)

Marcus Schwemer July 16, 201712:32 PM

More backends like Redis and Memcached are supported. These are seperate services.

Marcus Schwemer July 16, 201712:34 PM

If the hoster asks how much RAM you need for Redis, you can calculate it by looking at the size of cache_tables and add 25%.

Marcus Schwemer July 16, 201712:38 PM

Fix the issue, not the symptom and save the environment.

Marcus Schwemer July 16, 201712:40 PM

In five minutes the closing session starts … I’ll be back then 🙂

Marcus Schwemer July 16, 201712:51 PM

Marcus Schwemer July 16, 201712:53 PM

Oli Hader is entering the stage to say good bye.

Marcus Schwemer July 16, 201712:55 PM

The community thanks the sponsors who made this event also possible.

Marcus Schwemer July 16, 201712:55 PM

Thanks to the Hotel for the Icecreamchallenge … we broke the machine and they run out of icecream.

Marcus Schwemer July 16, 201712:57 PM

Thanks to the organizers!

Marcus Schwemer July 16, 201712:58 PM

Now the voting for the best dressed developer starts!

Marcus Schwemer July 16, 20171:00 PM

Here are the candidates:

Marcus Schwemer July 16, 20171:01 PM

Team Unicorn won the “Best Dressed Developer” competition. The price is a free ticket for T3DD18

Marcus Schwemer July 16, 20171:02 PM

Marcus Schwemer July 16, 20171:04 PM

Marcus Schwemer July 16, 20171:05 PM

Here the team of the enablers:

Marcus Schwemer July 16, 20171:07 PM

Marcus Schwemer July 16, 20171:07 PM

Marcus Schwemer July 16, 20171:08 PM

Thank you for reading and following the last days.

I hope, you enjoyed it.

Bye, bye!

Leave a Comment.