Change record status: 
Project: 
Introduced in branch: 
9.4.x
Introduced in version: 
9.4.0
Description: 

Drupal\serialization\Normalizer\NormalizerBase now implements CacheableSupportsMethodInterface and returns FALSE by default. This means classes extending the abstract classes from core keep working as they did before. All concrete implementations in now have a method hasCacheableSupportsMethod that returns TRUE.

This interface was introduced in Symfony 4.1.

Applications can define lots of normalizers/denormalizers and Symfony must call the supportsNormalization() method for each of them whenever a new object is normalized/denormalized. In theory the result of supportsNormalization() can depend on multiple factors. In practice most normalizers only depend on the type and format and that information is easily cacheable.

This is also true for Drupal, we can cache the result based on the type and format passed, which means a lot less calls. This change speeds up normalizing between 5 and 60 percent.

Impacts: 
Module developers
Site templates, recipes and distribution developers