logo

Palette - Make it Colorful🎨

Palette - Visual Page Builder, no design degree required.

Live Demo Download Palette

स्क्रॉल
03/10/2025, by Ivan

Cache max-age = समय पर निर्भर कैश

Cache max-age HTTP हेडर Cache-Control की max-age निर्देशिका के समान है।

क्यों?

कैश का अधिकतम समय (max-age) समय-निर्भर कैश बनाने का एक घोषणात्मक तरीका प्रदान करता है।

कुछ डेटा केवल एक सीमित अवधि तक मान्य होते हैं, इस स्थिति में आप उपयुक्त अधिकतम आयु निर्दिष्ट करना चाहेंगे। हालांकि, Drupal 8 कोर के मामले में हमारे पास ऐसा डेटा नहीं है, जो केवल सीमित अवधि तक मान्य हो; हम सामान्यतः हमेशा के लिए कैश करते हैं (नीचे देखें) और पूरी तरह से कैश टैग्स पर निर्भर रहते हैं अमान्यकरण (invalidation) के लिए।

क्या?

कैश max-age एक धनात्मक पूर्णांक होता है, जो सेकंड की संख्या को व्यक्त करता है।

कैश का अधिकतम समय अलग-अलग पूर्णांकों के रूप में पारित किया जाता है, क्योंकि किसी दिए गए कैश आइटम का तार्किक रूप से केवल एक अधिकतम समय हो सकता है।

उदाहरण:

  • 60 का अर्थ है 60 सेकंड के लिए कैश
  • 100 का अर्थ है 100 सेकंड के लिए कैश
  • 0 का अर्थ है 0 सेकंड के लिए कैश, यानी कोई कैश नहीं
  • \Drupal\Core\Cache\Cache::PERMANENT का अर्थ है हमेशा के लिए कैश, यानी केवल कैश टैग्स द्वारा अमान्य किया जाएगा। (अन्य शब्दों में: ∞ या अनंत सेकंड।)

इसलिए, यदि आप उदाहरण के लिए, किसी रेंडर किए गए ब्लॉक को कैश होने से रोकना चाहते हैं, तो आपको उसके लिए max-age = 0 निर्दिष्ट करना होगा।

अधिकांश रेंडर ऐरे के लिए उदाहरण:

$build['#cache']['max-age'] = 0;

फ़ंक्शन में उदाहरण:

\Drupal::cache()->set('my_cache_item', $school_list, REQUEST_TIME + (86400));

यदि आप ब्लॉक का max-age 0 पर बदलना चाहते हैं, तो आपको getCacheMaxAge मेथड को लागू करना होगा।

max-age की सीमाएँ

दुर्भाग्य से, max-age गुमनाम (anonymous) उपयोगकर्ताओं और Drupal Core के Page Cache मॉड्यूल के लिए काम नहीं करता। उदाहरण के लिए, इन मुद्दों को देखें:

जब तक ये (और संभवतः अन्य) समस्याएँ हल नहीं हो जातीं, ध्यान रखें कि किसी पेज में शामिल रेंडर ऐरे पर max-age सेट करना पर्याप्त नहीं है ताकि गुमनाम उपयोगकर्ता अधिकतम समय समाप्त होने के बाद नया संस्करण देख सकें। इस बीच, प्रदत्त Cache Control Override मॉड्यूल इन समस्याओं को कम करने का प्रयास करता है। आपको यह भी सौभाग्य मिल सकता है यदि आप समय-निर्भर सामग्री वाले पृष्ठों पर एक कस्टम कैश टैग सेट करें और hook_cron() के माध्यम से इन टैग्स को मैन्युअल रूप से अमान्य करें। शुभकामनाएँ!