WordPress.org

Make WordPress Core


Ignore:
Timestamp:
08/15/2019 09:08:05 PM (2 months ago)
Author:
kadamwhite
Message:

REST API: Cache results of get_item_schema on controller instances for performance.

Caches the output of get_item_schema() to avoid redundant recomputation of translatable strings and other computed values. This method is called many times per item in each REST request, and the results of the method should not vary between calls.
Additional schema fields are not cached.

Props kadamwhite, joehoyle, TimothyBlynJacobs.
Fixes #47871.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/rest-api/endpoints/class-wp-rest-post-statuses-controller.php

    r43571 r45811  
    269269     */
    270270    public function get_item_schema() {
     271        if ( $this->schema ) {
     272            return $this->add_additional_fields_schema( $this->schema );
     273        }
     274
    271275        $schema = array(
    272276            '$schema'    => 'http://json-schema.org/draft-04/schema#',
     
    319323        );
    320324
    321         return $this->add_additional_fields_schema( $schema );
     325        $this->schema = $schema;
     326        return $this->add_additional_fields_schema( $this->schema );
    322327    }
    323328
Note: See TracChangeset for help on using the changeset viewer.