web-dev-qa-db-ja.com

Ajaxは、できる限り10倍かかります。

私は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リクエストをスピードアップした経験は何ですか?

50
Mike

うん、これは完全なWordPress環境を持つためにあなたがそれをロードするのにかなりの時間を費やす必要があるという厄介な問題です。

私は仕事のために(非常に動的なインクリメンタルサーチ機能のために)もっと良いパフォーマンスを必要としていました。

  1. Ajaxハンドラとしてのカスタムファイル.
  2. SHORTINIT定数 限られた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
56
Rarst

私はこれを見つけました、そしてそれは私の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' );