अजाक्स को 10x तक ले जाना चाहिए जब तक कि उसे चाहिए


50

मैंने अभी-अभी वर्डप्रेस के साथ अपना पहला गंभीर मुद्दा मारा है और किसी के लिए जो अजाक्स का आनंद ले रहा है यह एक बड़ी बात है।

मेरा एक अजाक्स अनुरोध है जो अजाक्स एपीआई का उपयोग करते समय पूरा करने में 1.5 सेकंड का समय ले रहा है।

यदि मैं एक ही सटीक कोड लेता हूं और इसे कस्टम स्क्रिप्ट (कोई वर्डप्रेस) के साथ नहीं चलाता है, तो अजाक्स अनुरोध केवल 150 मिलीसेकंड लेता है। यह कोई बढ़ा - चढ़ा कर कही जा रही बात नहीं है

यदि आप http://wp.smashingmagazine.com/2011/10/18/how-to-use-ajax-in-wordpress/ की बहुत ही पहली टिप्पणी देखते हैं और इसके बाद होने वाली बातचीत आपको दिखाई देगी कि यह सुस्ती है इस तथ्य से कि आपके अनुरोध पर, सभी WP लोड किए गए हैं ...

मुझे उम्मीद है कि वहाँ एक समाधान है जो वर्डप्रेस के सभी लोड नहीं करते हुए अजाक्स अनुरोध करने के लिए संभव बना देगा।

वर्डप्रेस के साथ अजाक्स अनुरोधों को तेज करने के साथ आपके अनुभव क्या हैं?


3
मुझे आश्चर्य है कि लोकप्रिय कैशिंग प्लगइन्स इस स्थिति को कवर करते हैं।
राफेल

@ राफेल, मैंने इसके बारे में भी सोचा, लेकिन इसका कोई उल्लेख नहीं देखा है। अगर वे करते हैं तो यह बहुत अच्छा होगा
माइक

जवाबों:


57

हां, यह एक बुरा मुद्दा है कि पूर्ण वर्डप्रेस वातावरण बनाने के लिए आपको इसे लोड करने में काफी समय बिताने की आवश्यकता है।

मुझे काम के लिए बहुत बेहतर प्रदर्शन (बहुत गतिशील वृद्धिशील खोज सुविधा के लिए) की आवश्यकता है और जो मैं गया, वह है:

  1. अजाक्स हैंडलर के रूप में कस्टम फ़ाइल।
  2. सीमित WP कोर लोड के लिए SHORTINIT स्थिरांक
  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 प्रतियोगी से आपका क्या अभिप्राय है? क्या आप उदाहरण दे सकते हैं? मैं कल्पना करता हूं कि मुझे अनुरोध की आवश्यकता के आधार पर WP की अलग-अलग डिग्री के साथ अपने स्वयं के हैंडलर स्थापित करने की आवश्यकता होगी, लेकिन मैं आपके द्वारा बनाए गए कुछ उदाहरणों को देखना चाहूंगा।
माइक

6
@ यह व्यापक रूप से ज्ञात नहीं है, लेकिन अवधारणा में वास्तव में सरल है - यदि SHORTINITनिरंतर सेट किया गया है तो WP अधिकांश कोर (एपीआई / फ़ंक्शन के अधिकांश, कोई प्लगइन्स, कोई थीम नहीं) लोड नहीं करेगा। मैं जवाब देने के लिए कुछ कोड जोड़ूंगा।
रारस्ट

1
जो ठीक लगे। मुझे सिर्फ इस तथ्य की तरह नहीं है कि हमें '../../../../wp-load.php' का उपयोग करना होगा; जो इस सुंदर रिवाज को बनाता है। मुझे यह भी चिंता है कि वास्तव में आपके लिए "जरूरत" के संसाधनों को खींचना कितना आसान है, मेरे अनुभव से b / c वर्डप्रेस बहुत मॉड्यूलर नहीं है।
माइक

@ सही है, लेकिन मुद्दों के साथ भी यह समापन बिंदु की तुलना में बहुत बेहतर है जिसका WP के बारे में कोई सुराग नहीं है। यह (और) कुछ और सुधार किया जाना चाहिए, लेकिन यह मेरे लिए फिलहाल जरूरी काम नहीं है।
दुर्लभ

क्या वर्डप्रेस के भीतर wp-load.php के स्थान का पता लगाने की कोई विधियाँ हैं? उदाहरण के लिए, क्या मैं प्लगइन लोड पर इसके भीतर एक चर के रूप में सेट किए गए पथ के साथ एक स्थिर फ़ाइल लिख सकता हूं, फिर उस फ़ाइल को स्टैंड में अकेले अजाक्स प्रतिक्रिया फ़ाइल शामिल करें?
हर्सेवाथिडिड

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' );
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.