मुझे ट्रांज़ेक्टर एपीआई का उपयोग कब करना चाहिए?


16

मैंने पहले कभी भी ट्रांसफर एपीआई का उपयोग नहीं किया है और सोच रहा था कि किसी को इसका उपयोग करने के बारे में मार्गदर्शन करना है या नहीं। कोडेक्स लेख का तात्पर्य है कि एक विषय डेवलपर के रूप में मैं हर नए सेट कर सकते हैं WP_Query()एक क्षणिक रूप में; मुझे लगता है कि प्रत्यक्ष $ wpdb प्रश्नों के लिए यही कहा जा सकता है और query_posts()। क्या वह ओवरकिल है? और / या अन्य स्थान हैं जिन्हें मुझे इसका उपयोग करने के लिए डिफ़ॉल्ट होना चाहिए?

मैं अक्सर अपनी साइट (आमतौर पर W3 कुल कैश) पर कैशिंग प्लगइन्स का उपयोग करता हूं और ऐसा लगता है कि ट्रांज़ैक्टर का उपयोग करने से प्लगइन की प्रभावशीलता बढ़ सकती है, लेकिन अगर मैं एक सर्वोत्तम अभ्यास नहीं है, तो मैं हर चीज़ में ग्राहकों को लपेटकर पागल नहीं होना चाहता।


सभी को धन्यवाद, मेरी इच्छा है कि मैं एक से अधिक उत्तरों को 'समाधान' के रूप में चिह्नित कर सकूं। महान जानकारी, बहुत सराहना की!
मिशेल

जवाबों:


16

जब आप अपने थीम और प्लग इन में जटिल प्रश्न कर रहे हों तो मरीज़ महान हैं। मैं मेनू जैसी चीज़ों के लिए ट्रांज़िस्टर का उपयोग करता हूं और उदाहरण के लिए साइडबार में ट्विटर से ट्वीट जैसी अन्य चीजें दिखा रहा हूं। मैं उनका उपयोग पूरी तरह से सब कुछ के लिए नहीं करूँगा-इसलिए डेटा के केवल अस्थायी टुकड़े जो कैश किए जा सकते हैं।

ध्यान रखें कि यदि आप ट्रांजैक्शंस के साथ मेम्केड जैसी किसी चीज का उपयोग करते हैं, तो आपको बड़े पैमाने पर प्रदर्शन का लाभ मिलेगा। ग्राहकों के लिए नियम यह है कि वे उन डेटा के लिए उपयोग न करें जो समाप्त नहीं होने चाहिए क्योंकि वे वास्तव में केवल अस्थायी डेटा के लिए हैं और ध्यान रखें कि ग्राहक हमेशा डेटाबेस में संग्रहीत नहीं होते हैं।

ग्राहकों के लिए कुछ उपयोग :

  • जटिल और कस्टम डेटाबेस क्वेरी
  • WordPress नेविगेशन मेनू
  • साइडबार विगेट्स जो जानकारी प्रदर्शित करते हैं जैसे; ट्वीट, हाल ही में साइट आगंतुकों या फ़्लिकर फोटो स्ट्रीम की एक सूची
  • कैशिंग टैग बादल

यह लेख एक बहुत ही जानकारीपूर्ण है जो त्वरित बेंचमार्क दिखाता है कि कैसे ग्राहक आपकी साइट को गति दे सकते हैं और यहां तक ​​कि कुछ उदाहरण भी हैं। इस अन्य लेख में भी मरीजों के उपयोग के कुछ बेहतरीन उदाहरण हैं जो आपको यह समझने में मदद कर सकते हैं कि उन्हें किस तरह से उपयोग करना है।


2
एक अन्य उपयोग: बाहरी HTTP अनुरोधों को कैशिंग। जैसे ट्विटर एपीआई को हिट करना। प्रत्येक पृष्ठ लोड पर ऐसा न करें, परिणामों को क्षणिक के साथ कैश करें।

11

वर्डप्रेस और उनके यांत्रिकी में कई कैशिंग तंत्र हैं, जो ऑब्जेक्ट कैश (मूल या नहीं) की पसंद के आधार पर भिन्न होते हैं :

+-----------+-------------------------+---------------------+
|           |         Native          | Object cache plugin |
+-----------+-------------------------+---------------------+
| Option    | Persistent (database)   | N/A                 |
| Transient | Persistent (database)   | Persistent (varies) |
| Cache     | Non-persistent (memory) | Persistent (varies) |
+-----------+-------------------------+---------------------+

संक्षेप में, इसका मतलब यह है कि क्षणिक हमेशा स्थिर रहता है (मूल रूप से कैश के विपरीत पेज लोड के बीच जीवित रहेगा), लेकिन यदि उपलब्ध कराया गया (विकल्प के विपरीत) यह अनुकूलित भंडारण का उपयोग करेगा।

यह ग्राहकों को कैशिंग के लिए सबसे बहुमुखी विकल्प बनाता है।

हालाँकि लचीलेपन के साथ समवर्ती जटिलता आती है और उनके साथ काफी बारीकियाँ होती हैं (जैसे कि नाम की लंबाई की सीमा, समाप्ति के साथ और बिना अलग-अलग व्यवहार, कचरा संग्रह की कमी) जो उन्हें प्रतीत होने से अधिक जटिल बनाते हैं।

कुल मिलाकर:

  • उन चीजों को बचाने के लिए विकल्पों का उपयोग करें जो लगातार होनी चाहिए
  • किसी और चीज की कैशिंग के लिए ट्रांज़ेक्टर का उपयोग करें
  • जब आप तीनों की बहुत अच्छी समझ रखते हैं तो कैशे का उपयोग करें और यह जानें कि कैच फिट केस का उपयोग दूसरों की तुलना में बेहतर है (जो अक्सर नहीं होगा)

4

मुझे लगता है कि स्टर्लिंग के कोड को get_transient फ़ंक्शन को दो बार कॉल न करके बेहतर बनाया जा सकता है। इसके बजाय पहले परिणाम को एक अस्थायी चर में संग्रहीत करें। क्योंकि क्षणिक एपीआई ist गति के पीछे विचार ;-)

private function _get_data( $query) {
    $result = get_transient( $query );
    if ( $result ) {
       return $result;
    } else { 
       return $this->_get_query( $query ); 
    }
}

3

संक्षिप्त उत्तर: आपको इसका उपयोग तब करना चाहिए जब आप कर सकते हैं।

लंबा जवाब:

ट्रांजैक्शन एपीआई कैशिंग के लिए है। इसलिए आप इसका ज्यादा से ज्यादा इस्तेमाल करना चाहते हैं। आप एक फ़ंक्शन लिख सकते हैं जो आपके लिए ऐसा करता है।

यह ओवरकिल नहीं है और अगर ठीक से किया जाता है तो यह बहुत सुंदर होता है:

// If the transient isn't false, then you can just get the cached version.
// If not, we'll call another function that runs a database query.
private function _get_data( $query) {
    return
    ( get_transient( $query ) ) ?
    get_transient( $query ) :
    $this->_get_query( $query );
}

// After you make the query, set the transient so you can leverage on caching plugins.
private function _get_query( $query ) {
  // Database logic. Results go to $results.
  ...
  set_transient( $query, $results , 0 ); // 0 Means cache for as long as you can.
}

3

जब आप फ़ेसबुक, ट्विटर जैसे बाहरी स्रोतों से डेटा ला रहे हों, तो ग्राहक API वास्तव में उपयोगी है।

Transitions API क्या है और Cache WordPress फंक्शन के साथ क्या अंतर है, इस बारे में अधिक स्पष्ट जानकारी प्राप्त करने के लिए, मैं ओटो और नैनिक की वर्डकैंप सैन फ्रांसिस्को 2011 की चर्चा देखने की सलाह देता हूं।

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