POST requests are now render cached.
Drupal's render caching system was previously entirely disabled on POST requests in order for form discovery to work.
Forms continue to not be render cached on POST requests, via the special CACHE_MISS_IF_UNCACHEABLE_HTTP_METHOD:form tag, this allows form submissions to work without any changes. The CACHE_MISS_IF_UNCACHEABLE_HTTP_METHOD:form cache tag should be considered reserved. Other cache tags starting with the CACHE_MISS_IF_UNCACHEABLE_HTTP_METHOD: string can potentially be used by custom or contrib code and will have the same treatment.
All other cacheable render arrays will now be cached the same as they would be on GET requests when there is a render cache hit. Render cache misses will not be written back to the cache, to ensure that no POST-specific information gets written to the cache, and because any caches that are only written on POST would have very low, if any, hit rates.
This change only benefits forms that are rendered in lazy builders - any form rendered in a block (all blocks are rendered as lazy builders), such as the login block, or forms specifically implemented via lazy builders such as the comment form. This is because forms themselves are set to not be render cacheable until #2578855: Form tokens are now rendered lazily, allow forms to opt in to be cacheable is completed, and cache metadata bubbling means that parent render arrays also become uncacheable. When lazy builders are used, the form is auto-placeholdered and the cacheability of the parent render array becomes unaffected by the form.