আমি কীভাবে কোনও নির্দিষ্ট পৃষ্ঠা ক্যাশে হওয়া রোধ করতে পারি?


15

আমি আমার ড্রুপাল 8 সাইটে ক্যাশে সক্রিয় করেছি এবং অবশ্যই সমস্ত পৃষ্ঠাগুলি প্রত্যাশার মতো ক্যাশে হয়েছে।

তবে, আমি একটি নির্দিষ্ট পৃষ্ঠাতে চাইছি সেই ক্যাশে বাইপাস করা।

আমার নিয়ামকটিতে আমি পৃষ্ঠাটি নীচে তৈরি করেছি:

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

আমি কীভাবে দ্রুপালকে বলতে পারি যে আমার পৃষ্ঠাটি ক্যাশে না করে?

উত্তর:


31

ড্রুপাল 7 এর জন্য:

ড্রুপালের ফাংশনটি রয়েছে ড্রপাল_পেজ_আইস_ক্যাশেবল () যা কোনও পৃষ্ঠা অপছিন্নযোগ্য হিসাবে সেট করতে ব্যবহার করা যেতে পারে।

এখানে ডকুমেন্টেশন রয়েছে: https://api.drupal.org/api/drupal/includes!bootstrap.inc/function/drupal_page_is_cacheable/7

ড্রুপাল 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বিকল্প রয়েছে (YOUR_MODULE.routing.yml)। উদাহরণ: ফাইল: mymodule.routing.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

ড্রুপাল 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);
  }
 }
}

আরও তথ্য https://www.drupal.org/docs/8/api/routing-system/altering-existing-routes-and-adding-new-routes-based-on-dynamic-ones দেখুন


1

আপনি ড্রপাল ক্যাশে এবং বার্নিশের মতো সার্ভার সাইড ক্যাশে এড়াতে এই মডিউলটি ব্যবহার করতে পারেন https://www.drupal.org/project/ape

এটি পরিচিতি সার্ভারে বার্নিশ ক্যাশে আমার জন্য কাজ করে।

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