Ajax는 10 배의 시간이 걸린다


50

방금 WordPress에서 첫 번째 심각한 문제를 겪었고 Ajax를 즐기는 사람에게는 이것이 가장 큰 문제입니다.

Ajax API를 사용하는 동안 완료하는 데 1.5 초가 걸리는 Ajax 요청이 있습니다.

동일한 정확한 코드를 가져 와서 사용자 정의 스크립트 (WordPress 없음)로 실행하면 Ajax 요청에 150 밀리 초가 걸립니다. 이것은 과장이 아닙니다

http://wp.smashingmagazine.com/2011/10/18/how-to-use-ajax-in-wordpress/의 첫 번째 주석을 보면 다음 대화에서 이러한 속도 저하가 발생 함을 알 수 있습니다 귀하의 요청에 따라 모든 WP 가로 드됩니다 ...

모든 WordPress를로드하지 않고 Ajax 요청을 할 수있는 솔루션이 있기를 바랍니다.

WordPress로 Ajax 요청 속도를 향상시킨 경험은 무엇입니까?


3
인기있는 캐싱 플러그인 이이 상황을 다루고 있는지 궁금합니다.
Raphael

@Raphael, 나도 그것에 대해 생각했지만 언급하지 않았습니다. 그들이 그렇게한다면 정말 좋을 것입니다
Mike

답변:


57

그러나 이것은 완전한 WordPress 환경을 갖추기 위해 상당한 시간을 소비 해야하는 불쾌한 문제입니다.

작업을 위해 훨씬 더 나은 성능 (매우 역동적 인 증분 검색 기능을 위해)이 필요했습니다.

  1. Ajax 핸들러로서의 사용자 정의 파일.
  2. 제한된 WP 코어로드에 대한 상수 상수 .
  3. 작업에 필요한 부분 만 코어의 매우 선택적으로로드 된 부분.

이는 매우 제한적인 환경을 제공하지만 성능은 훨씬 우수하고 WP (와 함께 시작 $wpdb) 와의 적절한 호환성 이 유지됩니다.

다음은 로더 파일을 시작하는 것입니다. 예쁘지는 않지만 특정 요구 사항에 적합합니다.

<?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

1
SHORTINIT contant은 무슨 뜻인가요? 예를 들어 줄 수 있습니까? 요청의 필요에 따라 다양한 정도의 WP 가로 드 된 자체 처리기를 설정해야하지만 생성 한 예제를보고 싶습니다.
Mike

6
@ 모두 널리 알려지지 않았지만 개념 상 실제로는 간단 합니다. SHORTINIT상수가 설정되면 WP는 대부분의 코어 (로드는 API / 함수, 플러그인, 테마 없음)를 대부분로드하지 않습니다. 대답 할 코드를 추가하겠습니다.
Rarst

1
괜찮습니다. 나는 우리가 require '../../../../wp-load.php'를 사용해야한다는 사실을 좋아하지 않습니다. 이것은 꽤 관습을 만듭니다. 또한 필자가 경험 한 "필요한"리소스를 실제로 가져 오는 것이 얼마나 쉬운 지 걱정한다. WordPress는 모듈식이 아니다.
Mike

@Mike는 정확하지만 문제가 있어도 WP에 대한 단서가없는 끝점보다 훨씬 낫습니다. 이것은 좀 더 개선 될 수는 있지만 지금 당장 긴급한 일은 아닙니다.
Rarst

WordPress 내에서 wp-load.php의 위치를 ​​감지하는 방법이 있습니까? 예를 들어 플러그인로드시 경로로 변수로 설정된 정적 파일을 작성한 다음 독립형 Ajax 응답 파일에 해당 파일을 포함시킬 수 있습니까?
hereswhatidid

0

나는 이것을 발견했고 그것은 나의 아약스를 가속화했다.

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' );
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.