Ajax toma 10x el tiempo que debería / podría

48

Acabo de encontrar mi primer problema serio con WordPress y para alguien que disfruta de Ajax, es un problema.

Tengo una solicitud de Ajax que tarda 1,5 segundos en completarse mientras uso la API de Ajax.

Si tomo el mismo código exacto y lo ejecuto con un script personalizado (sin WordPress), la solicitud de Ajax solo toma 150 milisegundos. Esto no es una exageración

Si observa el primer comentario de enlace y la conversación que sigue verá que esta lentitud es causada por el hecho de que en su solicitud, todos los WP están cargados ...

Espero que exista una solución que permita realizar solicitudes de Ajax sin cargar todo WordPress.

¿Cuáles son sus experiencias con la aceleración de las solicitudes de Ajax con WordPress?

    
pregunta Mike 09.02.2012 - 20:45

2 respuestas

53

Sí, este es un problema desagradable que para tener un entorno de WordPress completo necesitas pasar un tiempo considerable cargándolo.

Necesitaba un rendimiento mucho mejor (para una función de búsqueda incremental muy dinámica) para el trabajo y lo que hice fue:

  1. Archivo personalizado como controlador Ajax.
  2. constante SHORTINIT para una carga limitada de WP core.
  3. Partes del núcleo cargadas de manera muy selectiva, solo las necesarias para la tarea.

Esto proporciona un entorno muy limitado, pero el rendimiento es mucho mejor y se mantiene un grado razonable de compatibilidad con WP (comenzando con $wpdb ).

Aquí está el archivo de inicio de mi cargador, no es bonito pero funciona para necesidades específicas:

<?php

ini_set('html_errors', 0);
define('SHORTINIT', true);

require '../../../../wp-load.php';
require( ABSPATH . WPINC . '/formatting.php' );
require( ABSPATH . WPINC . '/meta.php' );
require( ABSPATH . WPINC . '/post.php' );
wp_plugin_directory_constants();

// stuff goes here
    
respondido por el Rarst 09.02.2012 - 21:12
0

Encontré esto y aceleré mi ajax.

function my_deregister_heartbeat() {
    global $pagenow;

    if ( 'post.php' != $pagenow && 'post-new.php' != $pagenow ) {
         wp_deregister_script('heartbeat');
         wp_register_script('heartbeat', false);
     }
}
add_action( 'admin_enqueue_scripts', 'my_deregister_heartbeat' );
    
respondido por el Lisa Daugherty Thompson 13.07.2014 - 15:20

Lea otras preguntas en las etiquetas