logo

एक्स्ट्रा ब्लॉक टाइप्स (EBT) - नया लेआउट बिल्डर अनुभव❗

एक्स्ट्रा ब्लॉक टाइप्स (EBT) - स्टाइलिश, कस्टमाइज़ेबल ब्लॉक टाइप्स: स्लाइडशो, टैब्स, कार्ड्स, एकॉर्डियन्स और कई अन्य। बैकग्राउंड, DOM बॉक्स, जावास्क्रिप्ट प्लगइन्स के लिए बिल्ट-इन सेटिंग्स। आज ही लेआउट बिल्डिंग का भविष्य अनुभव करें।

डेमो EBT मॉड्यूल्स EBT मॉड्यूल्स डाउनलोड करें

❗एक्स्ट्रा पैराग्राफ टाइप्स (EPT) - नया पैराग्राफ्स अनुभव

एक्स्ट्रा पैराग्राफ टाइप्स (EPT) - एनालॉजिकल पैराग्राफ आधारित मॉड्यूल्स का सेट।

डेमो EPT मॉड्यूल्स EPT मॉड्यूल्स डाउनलोड करें

स्क्रॉल
03/10/2025, by Ivan
Cache tags = डेटा निर्भरताएँ
Cache tags उन डेटा पर निर्भरता का वर्णन करते हैं जिन्हें Drupal द्वारा प्रबंधित किया जाता है

क्यों?

कॅश टैग्स एक घोषणात्मक तरीका प्रदान करते हैं यह ट्रैक करने के लिए कि कौन-से कॅश आइटम Drupal द्वारा प्रबंधित कुछ डेटा पर निर्भर हैं।

यह CMS/Framework जैसे Drupal के लिए महत्वपूर्ण है क्योंकि एक ही कंटेंट को कई तरीकों से पुनः उपयोग किया जा सकता है। दूसरे शब्दों में: यह पहले से नहीं पता हो सकता कि कोई कंटेंट कहाँ उपयोग किया जाएगा। जहाँ भी कंटेंट का उपयोग किया जाता है, वहाँ उसे कॅश किया जा सकता है। इसका मतलब है कि वही कंटेंट दर्जनों जगहों पर कॅश हो सकता है। इससे हमें कंप्यूटर विज्ञान की एक प्रसिद्ध कहावत याद आती है: "कंप्यूटर विज्ञान में केवल दो कठिन समस्याएँ होती हैं: कॅश अमान्य करना और नामकरण।" - यानी आप सभी कॅश आइटम कैसे अमान्य करेंगे जहाँ कंटेंट का उपयोग हुआ है?

नोट: Drupal 7 तीन तरीकों से कॅश आइटम्स को अमान्य करने की अनुमति देता है: किसी विशेष CID को अमान्य करना, CID प्रिफिक्स का उपयोग करना, या पूरे कॅश बिन को अमान्य करना। इनमें से कोई भी तरीका यह संभव नहीं बनाता कि उन कॅश आइटम्स को अमान्य किया जाए जिनमें बदली हुई entity मौजूद है, क्योंकि यह पता लगाना असंभव था!

क्या?

एक कॅश टैग एक स्ट्रिंग है।

कॅश टैग्स सेट्स (string[]) के रूप में पास किए जाते हैं, क्रम का कोई महत्व नहीं है। एक कॅश आइटम कई कॅश टैग्स पर निर्भर हो सकता है।

सिंटैक्स

परंपरा से, इनका रूप thing:identifier होता है — और जब किसी चीज़ के कई उदाहरणों का कोई अर्थ नहीं होता, तो यह केवल thing होता है। केवल नियम यह है कि इसमें स्पेस नहीं हो सकता।

कोई सख्त सिंटैक्स नहीं है।

उदाहरण:

  • node:5 - Node entity 5 के लिए कॅश टैग (जब भी यह बदला जाए अमान्य हो जाता है)
  • user:3 - User object 3 के लिए कॅश टैग (जब भी यह बदला जाए अमान्य हो जाता है)
  • node_list - Node entities की सूची का कॅश टैग (जब कोई नया Node बनाया, हटाया या अपडेट किया जाता है, तब अमान्य हो जाता है)। यह किसी भी entity प्रकार के लिए लागू है: {entity_type}_list।
  • config:system.performance - system.performance कॉन्फ़िगरेशन के लिए कॅश टैग
  • library_info - asset libraries के लिए कॅश टैग

सामान्य कॅश टैग्स

Drupal द्वारा प्रबंधित डेटा 3 श्रेणियों में विभाजित है:

  • entities – इनके कॅश टैग्स इस रूप में होते हैं <entity type ID>:<entity ID>, और साथ ही <entity type ID>_list और <entity type ID>_list:<bundle>। कॉन्फ़िगरेशन entities बेस कॉन्फ़िगरेशन ऑब्जेक्ट का कॅश टैग उपयोग करते हैं।
  • configuration – इनके कॅश टैग्स का रूप होता है config:<configuration name>
  • कस्टम "custom" (जैसे library_info)

Drupal entities और configuration के लिए कॅश टैग्स स्वतः प्रदान करता है – देखें Entity बेस क्लास और ConfigBase बेस क्लास

हालाँकि कई entity प्रकार पूर्वानुमेय फॉर्मेट <entity type ID>:<entity ID> का पालन करते हैं, थर्ड-पार्टी कोड को इस पर निर्भर नहीं होना चाहिए। इसके बजाय उन्हें object->getCacheTags() जैसे तरीकों का उपयोग करना चाहिए।

इसके अलावा, जब किसी entity से संबंधित सूची (जैसे Views listing) अपडेट होती है, तो EntityTypeInterface::getListCacheTags() का उपयोग करके सूची टैग्स भी अमान्य किए जाने चाहिए।

कस्टम टैग्स भी बनाए जा सकते हैं, जैसे किसी विशेष taxonomy term से संबंधित सभी nodes के लिए:

function yourmodule_node_presave(NodeInterface $node) {
  $tags = [];
  if ($node->hasField('field_category')) {
    foreach ($node->get('field_category') as $item) {
      $tags[] = 'mysite:node:category:' . $item->target_id;
    }
  }
  if ($tags) {
    Cache::invalidateTags($tags);
  }
}

इन टैग्स का उपयोग कोड और Views में किया जा सकता है, Views Custom Cache Tag मॉड्यूल के साथ।

कैसे

सेट करना

किसी भी कॅश सर्वर को CacheBackendInterface को लागू करना चाहिए। जब आप ::set() का उपयोग करते हैं, तो तीसरा और चौथा आर्गुमेंट पास करें:

$cache_backend->set(
  $cid, $data, Cache::PERMANENT, ['node:5', 'user:7']
);

यह $cid वाले कॅश आइटम को स्थायी रूप से स्टोर करता है लेकिन इसे node:5 या user:7 टैग्स के साथ अमान्य किया जा सकता है।

अमान्य करना

Cache::invalidateTags() का उपयोग करके टैग्स द्वारा कॅश आइटम्स को अमान्य किया जा सकता है।

नोट: यह सभी कॅश बिन्स में उन टैग्स से जुड़े आइटम्स को अमान्य करता है।

डीबगिंग

कॅश टैग्स स्पेस से अलग किए जाते हैं और अल्फाबेटिकली सॉर्ट किए जाते हैं।

X-Drupal-Cache-Tags HTTP हेडर देखकर आप तुरंत जान सकते हैं कि कोई रिस्पॉन्स किन टैग्स पर निर्भर है।

रिवर्स प्रॉक्सी इंटीग्रेशन

Drupal Surrogate-Keys (Fastly) या Cache-Tag (Cloudflare) जैसे हेडर्स भेज सकता है ताकि CDN या Varnish इन्हें समझकर कॅश अमान्य कर सके।

सामान्यतः अनुशंसा की जाती है कि वेब सर्वर और रिवर्स प्रॉक्सी 16KB तक हेडर वैल्यू सपोर्ट करें (~1000 टैग्स)।

आंतरिक पेज कॅश

कॅश टैग्स के व्यापक उपयोग के कारण Drupal 8 में डिफ़ॉल्ट रूप से Internal Page Cache सक्षम है।

यह भी देखें