2017 © Pedro Peláez
 

wordpress-plugin wp-rest-api-object-cache

Enable object caching for WordPress' REST API. Aids in increased response times of your applications endpoints.

image

dwnload/wp-rest-api-object-cache

Enable object caching for WordPress' REST API. Aids in increased response times of your applications endpoints.

  • Thursday, July 26, 2018
  • by thefrosty
  • Repository
  • 2 Watchers
  • 10 Stars
  • 356 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 13 Versions
  • 493 % Grown

The README.md

WordPress REST API Object Cache

PHP from Packagist Latest Stable Version Total Downloads License Build Status, (*1)

Enable object caching for WordPress' REST API. Aids in increased response times of your applications endpoints., (*2)

Package Installation (via Composer)

To install this package, edit your composer.json file:, (*3)

{
    "require": {
        "dwnload/wp-rest-api-object-cache": "^1.3.0"
    }
}

Now run:, (*4)

$ composer install dwnload/wp-rest-api-object-cache, (*5)


Actions

Action Argument(s)
Dwnload\WpRestApi\RestApi\RestDispatch::ACTION_CACHE_SKIPPED mixed $result
WP_REST_Server $server
WP_REST_Request $request
Dwnload\WpRestApi\WpAdmin\Admin::ACTION_REQUEST_FLUSH_CACHE string $message
string $type
WP_User $user

How to use actions

use Dwnload\WpRestApi\RestApi\RestDispatch;
add_action( RestDispatch::ACTION_CACHE_SKIPPED, function( $result, \WP_REST_Server $server, \WP_REST_Request $request ) {
    // Do something here, like create a log entry using Wonolog.
}, 10, 3 );
use Dwnload\WpRestApi\WpAdmin\Admin;
add_action( Admin::ACTION_REQUEST_FLUSH_CACHE, function( $message, $type, WP_User $user ) {
    // Do something here, like create a log entry using Wonolog.
}, 10, 3 );

Filters

Filter Argument(s)
Dwnload\WpRestApi\RestApi\RestDispatch::FILTER_CACHE_HEADERS array $headers
string $request_uri
WP_REST_Server $server
WP_REST_Request $request
WP_REST_Response $response (rest_pre_dispatch only)
Dwnload\WpRestApi\RestApi\RestDispatch::FILTER_CACHE_SKIP boolean $skip ( default: WP_DEBUG )
string $request_uri
WP_REST_Server $server
WP_REST_Request $request
Dwnload\WpRestApi\RestApi\RestDispatch::FILTER_API_KEY string $request_uri
WP_REST_Server $server
WP_REST_Request $request
Dwnload\WpRestApi\RestApi\RestDispatch::FILTER_API_GROUP string $cache_group
Dwnload\WpRestApi\RestApi\RestDispatch::FILTER_CACHE_EXPIRE int $expires
Dwnload\WpRestApi\WpAdmin\Admin::FILTER_CACHE_UPDATE_OPTIONS array $options
Dwnload\WpRestApi\WpAdmin\Admin::FILTER_CACHE_OPTIONS array $options
Dwnload\WpRestApi\WpAdmin\Admin::FILTER_SHOW_ADMIN boolean $show
Dwnload\WpRestApi\WpAdmin\Admin::FILTER_SHOW_ADMIN_MENU boolean $show
Dwnload\WpRestApi\WpAdmin\Admin::FILTER_SHOW_ADMIN_BAR_MENU boolean $show
Dwnload\WpRestApi\RestApi\RestDispatch::FILTER_ALLOWED_CACHE_STATUS array $status HTTP Header statuses (defaults to array( 200 )
Dwnload\WpRestApi\RestApi\RestDispatch::FILTER_CACHE_VALIDATE_AUTH boolean $authenticated
WP_REST_Request $request

How to use filters

Sending headers., (*6)

use Dwnload\WpRestApi\RestApi\RestDispatch;
add_filter( RestDispatch::FILTER_CACHE_HEADERS, function( array $headers ) : array {
    $headers['Cache-Control'] = 'public, max-age=3600';

    return $headers;
} );

Changing the cache expire time., (*7)

use Dwnload\WpRestApi\RestApi\RestDispatch;
add_filter( RestDispatch::FILTER_CACHE_EXPIRE, function() : int {
    // https://codex.wordpress.org/Transients_API#Using_Time_Constants
    return ( HOUR_IN_SECONDS * 5 );
} );
use Dwnload\WpRestApi\WpAdmin\Admin;
add_filter( Admin::FILTER_CACHE_OPTIONS, function( array $options ) : array {
    if ( ! isset( $options['timeout'] ) ) {
        $options['timeout'] = array();
    }

    // https://codex.wordpress.org/Transients_API#Using_Time_Constants
    $options['timeout']['length'] = 15;
    $options['timeout']['period'] = DAY_IN_SECONDS;

    return $options;
} );

Validating user auth when ?context=edit, (*8)

use Dwnload\WpRestApi\RestApi\RestDispatch;
add_filter( RestDispatch::FILTER_CACHE_VALIDATE_AUTH, function( bool $auth, WP_REST_Request $request ) : bool {
    // If you are running the Basic Auth plugin.
    if ( $GLOBALS['wp_json_basic_auth_error'] === true ) {
        $authorized = true;
    }
    // Otherwise, maybe do some additional logic on the request for current user...

    return $authorized;
}, 10, 2 );

Skipping cache, (*9)

use Dwnload\WpRestApi\RestApi\RestDispatch;
add_filter( RestDispatch::FILTER_CACHE_SKIP, function( bool $skip, string $request_uri ) : bool {
    if ( ! $skip && stripos( 'wp-json/dwnload/v2', $request_uri ) !== false ) {
        return true;
    }

    return $skip;
}, 10, 2 );

Deleting cache, (*10)

Soft delete: Append RestDispatch::QUERY_CACHE_DELETE to your query param: add_query_arg( [ RestDispatch::QUERY_CACHE_DELETE, '1' ], '<url>' ).
soft delete will delete the cache after the current request completes (on WordPress shutdown)., (*11)

Hard delete: Append RestDispatch::QUERY_CACHE_DELETE && RestDispatch::QUERY_CACHE_FORCE_DELETE to your query param: add_query_arg( [ RestDispatch::QUERY_CACHE_DELETE, '1', RestDispatch::QUERY_CACHE_FORCE_DELETE, '1' ], '<url>' ).
hard delete will delete the cache before the request, forcing it to repopulate., (*12)

empty ALL cache on post-save this is not ideal, (*13)

You can use the WordPress filter save_post if you would like to empty ALL cache on post save., (*14)

use Dwnload\WpRestApi\RestApi\RestDispatch;
add_action( 'save_post', function( $post_id ) {
  if ( class_exists( RestDispatch::class ) ) {
    call_user_func( [ ( WpRestApiCache::getRestDispatch(), 'wpCacheFlush' ] );
  }
} );

Maybe better to use transition_post_status, (*15)

add_action( 'transition_post_status', function(  string $new_status, string $old_status, \WP_Post $post ) {
  if ( 'publish' === $new_status || 'publish' === $old_status ) {
    \wp_cache_flush();
  }
}, 99, 3 );

The Versions

26/07 2018

dev-master

9999999-dev

Enable object caching for WordPress' REST API. Aids in increased response times of your applications endpoints.

  Sources   Download

MIT

The Requires

 

The Development Requires

26/07 2018

dev-develop

dev-develop

Enable object caching for WordPress' REST API. Aids in increased response times of your applications endpoints.

  Sources   Download

MIT

The Requires

 

The Development Requires

31/05 2018

1.2.3

1.2.3.0

Enable object caching for WordPress' REST API. Aids in increased response times of your applications endpoints.

  Sources   Download

MIT

The Requires

 

The Development Requires

14/05 2018

1.2.2

1.2.2.0

Enable object caching for WordPress' REST API. Aids in increased response times of your applications endpoints.

  Sources   Download

MIT

The Requires

 

The Development Requires

30/04 2018

1.2.1

1.2.1.0

Enable object caching for WordPress' REST API. Aids in increased response times of your applications endpoints.

  Sources   Download

MIT

The Requires

 

The Development Requires

26/04 2018

1.2.0

1.2.0.0

Enable object caching for WordPress' REST API. Aids in increased response times of your applications endpoints.

  Sources   Download

MIT

The Requires

 

The Development Requires

23/04 2018

1.1.1

1.1.1.0

Enable object caching for WordPress' REST API. Aids in increased response times of your applications endpoints.

  Sources   Download

MIT

The Requires

 

The Development Requires

19/04 2018

1.0.4

1.0.4.0

Enable object caching for WordPress' REST API. Aids in increased response times of your applications endpoints.

  Sources   Download

MIT

The Requires

 

The Development Requires

19/04 2018

1.0.3

1.0.3.0

Enable object caching for WordPress' REST API. Aids in increased response times of your applications endpoints.

  Sources   Download

MIT

The Requires

 

The Development Requires

19/04 2018

1.0.2

1.0.2.0

Enable object caching for WordPress' REST API. Aids in increased response times of your applications endpoints.

  Sources   Download

MIT

The Requires

 

The Development Requires

18/04 2018

1.0.1

1.0.1.0

Enable object caching for WordPress' REST API. Aids in increased response times of your applications endpoints.

  Sources   Download

MIT

The Requires

 

The Development Requires

21/02 2018

0.2.1

0.2.1.0

Enable object caching for WordPress' REST API. Aids in increased response times of your applications endpoints.

  Sources   Download

MIT

The Requires

 

The Development Requires

14/02 2018

0.2

0.2.0.0

Enable object caching for WordPress' REST API. Aids in increased response times of your applications endpoints.

  Sources   Download

MIT

The Requires

 

The Development Requires