আমি কখন ট্রান্সিয়েন্টস এপিআই ব্যবহার করব?


16

আমি ট্রান্সিয়েন্টস এপিআই এর আগে কখনও ব্যবহার করিনি এবং ভাবছিলাম যে কখন এটি ব্যবহার করবেন সে সম্পর্কে কারও কাছে গাইডেন্স রয়েছে কিনা। কোডেক্স নিবন্ধ যে বোঝা একটি থিম ডেভেলপার হিসেবে আমি প্রতিটি নতুন সেট করতে চাইবেন WP_Query()একটি অস্থায়ী হিসেবে; আমি ধরে নিলাম একই direct ডাব্লুপিডিবি ক্যোয়ারী এবং এর জন্য বলা যেতে পারে query_posts()। এটা কি ওভারকিল? এবং / অথবা এটি ব্যবহার করার জন্য আমার ডিফল্ট হওয়া উচিত এমন অন্য কোনও জায়গা রয়েছে?

আমি প্রায়শই আমার সাইটে ক্যাচিং প্লাগইন ব্যবহার করি (ডাব্লু 3 টোটাল ক্যাশে সাধারণত) এবং ট্রান্সিয়েন্টস ব্যবহার করে প্লাগইনটির কার্যকারিতা বাধাগ্রস্থ হতে পারে তবে আমি যদি ট্রান্সিয়েন্টারে সমস্ত কিছু মোড়ানো পাগল হতে চাই না তবে এটি যদি সর্বোত্তম অনুশীলন না হয়।


সবাইকে ধন্যবাদ, আমি আশা করি আমি একাধিক উত্তরকে 'সমাধান' হিসাবে চিহ্নিত করতে পারতাম। দুর্দান্ত তথ্য, অনেক প্রশংসা!
মিশেল

উত্তর:


16

যখন আপনি আপনার থিম এবং প্লাগইনগুলিতে জটিল প্রশ্নগুলি করেন তখন স্থানান্তরকারীরা দুর্দান্ত। আমি উদাহরণস্বরূপ সাইডবারে মেনু এবং টুইটার থেকে টুইটের মতো অন্যান্য জিনিস দেখানোর মতো জিনিসের জন্য ট্রানজেন্ট ব্যবহার করতে চাই। আমি এগুলি একেবারে সমস্ত কিছুর জন্য ব্যবহার করব না - তাই ক্যাশে করা যায় এমন কেবলমাত্র অস্থায়ী টুকরা।

মনে রাখবেন যে আপনি যদি স্থানান্তরকারীদের সাথে মেমক্যাচের মতো কিছু ব্যবহার করেন তবে আপনি একটি বিশাল পারফরম্যান্স লাভ লক্ষ্য করবেন। স্থানান্তরকারীদের সাথে নিয়মটি হ'ল ডেটাগুলির জন্য তাদের ব্যবহার না করা যা তারা কেবলমাত্র অস্থায়ী ডেটার জন্যই থাকে এবং মনে রাখবেন স্থানান্তরগুলি সর্বদা ডাটাবেসে সংরক্ষণ করা হয় না।

স্থানান্তরকারীদের জন্য কিছু ব্যবহার :

  • জটিল এবং কাস্টম ডাটাবেস অনুসন্ধান
  • ওয়ার্ডপ্রেস নেভিগেশন মেনু
  • সাইডবার উইজেটগুলি যা তথ্য প্রদর্শন করে; টুইটগুলি, সাম্প্রতিক সাইট দর্শকদের একটি তালিকা বা একটি ফ্লিকার ফটো স্ট্রিম
  • ট্যাগ মেঘের ক্যাচিং

এই নিবন্ধটি হ'ল দ্রুত মাপদণ্ড সহ একটি তথ্যমূলক যা কেবলমাত্র স্থানান্তরকারীরা কীভাবে আপনার সাইটের গতি বাড়িয়ে তুলতে পারে এবং এর কয়েকটি উদাহরণ রয়েছে তাও দেখায়। এই অন্যান্য নিবন্ধে ট্রান্সভেন্টগুলি ব্যবহারের কয়েকটি দুর্দান্ত উদাহরণ রয়েছে যা আপনাকে সেগুলির জন্য কীভাবে ব্যবহার করতে হবে তা বুঝতে সহায়তা করতে পারে।


2
আরেকটি ব্যবহার: বাইরের এইচটিটিপি অনুরোধগুলি ক্যাশে করা হচ্ছে। টুইটার এপিআই হিট করার মতো। প্রতিটি পৃষ্ঠা লোড এ এটি করবেন না, একটি ক্ষণস্থায়ী সঙ্গে ফলাফল ক্যাশে।
chrisguitarguy

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

আপনি যখন ফেসবুক, টুইটারের মতো বাহ্যিক উত্স থেকে ডেটা আনছেন তখন ট্রান্সিয়েন্টস এপিআই সত্যিই দরকারী।

ট্রান্সিয়েন্টস এপিআই কী এবং ক্যাশে ওয়ার্ডপ্রেস ফাংশনের সাথে তফাত কী তা সম্পর্কে আরও স্পষ্ট ধারণা পেতে, আমি ওয়ার্ডক্যাম্প সান ফ্রান্সিসকো ২০১১ থেকে অটো এবং ন্যানিকের আলোচনা দেখার পরামর্শ দিই

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.