AJAX花费的时间是它应该/可能花费的10倍

时间:2012-02-09 作者:Mike

我刚刚遇到WordPress的第一个严重问题,对于喜欢Ajax的人来说,这是一个大问题。

我有一个Ajax请求,在使用Ajax API时需要1.5秒才能完成。

如果我使用相同的代码并使用自定义脚本(没有WordPress)运行它,Ajax请求只需要150毫秒。This is not an exaggeration

如果你看到http://wp.smashingmagazine.com/2011/10/18/how-to-use-ajax-in-wordpress/ 接下来的对话中,您将看到,这种缓慢是由以下事实造成的:根据您的请求,所有WP都已加载。。。

我希望有一个解决方案可以在不加载所有WordPress的情况下发出Ajax请求。

您在使用WordPress加速Ajax请求方面有何经验?

2 个回复
最合适的回答,由SO网友:Rarst 整理而成

是的,这是一个令人讨厌的问题,要拥有完整的WordPress环境,您需要花费大量的时间来加载它。

我在工作中需要更好的性能(对于非常动态的增量搜索功能),我的选择是:

自定义文件作为Ajax处理程序

  • SHORTINIT constant 对于有限的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
    

  • SO网友:Lisa Daugherty Thompson

    我找到了这个,它加速了我的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\' );
    

    结束