Drupal 8 is SkyRocket FAST!

Submitted by ricardo on Thu, 04/23/2015 - 15:13

This slide comes from http://talks.php.net/fluent15#/ and should be compared to the other platforms there also, since the ~2500 requests per second on Drupal8/PHP7 overcome the 600 requests per second on WordPress 4.1.1/PHP7.
This was a recent presentation done by Rasmus Lerdorf (http://en.wikipedia.org/wiki/Rasmus_Lerdorf) in SAN FRANCISCO about PHP7.

The benchmark shows how Drupal 8 managed to beat itself and turned out to be the fastest of it's kind!
Drupal developers have done hundreds of patches to Drupal 8 to achieve this brilliant goal.

- every individual "thing" in Drupal 8 (entities, config …) now has a cache tag, that is invalidated whenever the "thing" changes
- when rendering something that depends on a "thing" (e.g. a node's title, a user's name, the comment threading setting …), its cache tag is associated with the render array
- when rendering the render array tree, cache tags bubble up, much like JS events bubble the DOM tree
- at the root, this bubbles into a X-Drupal-Cache-Tags header
- page cache — and any other reverse proxy — can use this header to invalidate only affected pages
- Drupal 8 therefore was able to enable page caching by default and *still* have instantaneous updates. In other words: *excellent* performance, out of the box, for anonymous users.

For authenticated users the trick is SmartCache https://www.drupal.org/node/2429617 :

- cache the final render array (at the html template level) just before #post_render_cache callbacks are applied.
- return that immediately after routing has taken place, hence avoiding the controller service (and its dependencies) being initialized, along with everything else for building the page.

Read more about this on Wim Leers' awesome blog post:
http://wimleers.com/blog/drupal-8-page-caching-enabled-by-default for details.
Tweet: https://twitter.com/wimleers/status/586173346582286336.


Powered by Drupal