मैं किसी विशेष पृष्ठ को कैश होने से कैसे रोक सकता हूं?


15

मैंने अपने Drupal 8 साइट पर कैश को सक्रिय कर दिया है, और निश्चित रूप से सभी पृष्ठों को उम्मीद के मुताबिक कैश किया गया है।

हालाँकि, मैं उस कैश को एक विशिष्ट पृष्ठ बायपास करना चाहूंगा।

अपने कंट्रोलर में मैंने पेज इस प्रकार बनाया है:

public function myPage() {
  return [
    '#markup' => time(),
  ];
}

मैं Drupal को अपने पेज को कैश न करने के लिए कैसे कह सकता हूं?

जवाबों:


31

ड्रुपल 7 के लिए:

Drupal का फ़ंक्शन drupal_page_is_cacheable () है, जिसका उपयोग किसी पृष्ठ को अनचाहे पर सेट करने के लिए किया जा सकता है।

यहाँ प्रलेखन है: https://api.drupal.org/api/drupal/includes!

ड्रुपल 8 के लिए:

// Deny any page caching on the current request.    
\Drupal::service('page_cache_kill_switch')->trigger();

फिर कोड है:

public function myPage() {
  \Drupal::service('page_cache_kill_switch')->trigger();
  return [
    '#markup' => time(),
  ];
}

हमेशा की तरह, एक बार अपना कैश साफ़ करें


19

किसी विशिष्ट पृष्ठ के लिए कैश अक्षम करें

रूट घोषणा से कस्टम पृष्ठ के लिए कैश अक्षम करें। यदि आप एक कस्टम कंट्रोलर (कस्टम मॉड्यूल) के लिए कैश को अक्षम करना चाहते हैं, तो आपके पास no_cacheविकल्प (आपका_मॉडयूएल.रूटिंग.लाइम) है। उदाहरण: फ़ाइल: mymodule.rout.yml

mymodule.myroute:
  path: '/mymodule/mypage'
  defaults:
    _controller: '\Drupal\mymodule\Controller\Pages::mypage'
    _title: 'No cache page'
  requirements:
    _access: 'TRUE'
  options:
    no_cache: 'TRUE'

मार्ग की प्रतिक्रियाओं को अस्वीकार्य के रूप में चिह्नित करने के लिए 'no_cache' मार्ग विकल्प जोड़ा गया


12

Drupal 8 में, आप कैश का उल्लेख अधिकतम आयु तक कर सकते हैं जब तक आप चाहते हैं कि आपका पेज कैश न हो जाए। किसी विशेष पृष्ठ (नियंत्रक पृष्ठ) का कैश निकालने के लिए, लिखें 'max-age' => 0,

public function myPage() {
  return [
   '#markup' => time(),
   '#cache' => ['max-age' => 0,],    //Set cache for 0 seconds.
  ];
} 

3

यदि आपको कॉन्ट्रिब मॉड्यूल के साथ कुछ करने की आवश्यकता है तो आप कैश समस्या को ठीक करने के लिए एक रूटस्क्रिप्सबर का उपयोग कर सकते हैं। आपको एक सेवा की आवश्यकता है ... या drupal grयदि ड्रुपल कंसोल है तो बस चलाएं ।

 namespace Drupal\mymodule\Routing;

 use Drupal\Core\Routing\RouteSubscriberBase;
 use Symfony\Component\Routing\RouteCollection;

 class RouteSubscriber extends RouteSubscriberBase {

/**
 * {@inheritdoc}
 */
protected function alterRoutes(RouteCollection $collection) {
  // Find the route you need ...
  if ($route = $collection->get('some.contrib.route')) {
    $options = $route->getOptions();
    $options['no_cache'] = TRUE;
    $route->setOptions($options);
  }
 }
}

अधिक जानकारी के लिए देखें


1

आप इस मॉड्यूल का उपयोग ड्रुपल कैश से बचने के लिए कर सकते हैं और सर्वर साइड कैश जैसे वार्निश https://www.drupal.org/project.urape

इसके लिए मेरे सर्वर पर वार्निश कैश में काम करता है।

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