تصویر محمدعلی اکبری

وقتی از فضای نرم افزار‌های تحت وب معمولی بیرون می‌آییم و وارد بازی‌های جدی تر می‌شویم، حساب و کتاب‌ها عوض می‌شود. در فضای امنیتی، دروپال دیگر امن نیست؛ در تعداد کاربر بالا، دروپال دیگر بهینه نیست؛

اینها نیست، اما این به شما بستگی دارد. اگر بخواهید با همان تکنیک‌های قبلی نرم‌افزار را جلو ببرید، حتما در این بازی بازنده خواهید بود. اینجاست که سردردها شروع می‌شود.

1. ایجاد جدول جدید برای cache

در صورتی که ماژول شما اطلاعات زیادی را در cache نگه می‌دارد بهتر است برای آن یک جدول جدید تعریف کنید. برای اینکار در my_module.install ساختار این جدول را معرفی کنید.

/**
 * Implementation of hook_schema().
 */
function my_module_schema() {
  $schema['cache_my_module'] = drupal_get_schema_unprocessed('system', 'cache');
  return $schema;
}

2. ذخیره و بازیابی اطلاعات از cache

// Get nodes from cache
if ($cache = cache_get('cache-key', 'cache_my_module')) {
  $data = $cache->data;
} else {
  $data = _my_module_complex_data_retrive();
  cache_set('cache-key', $data, 'cache_my_module', time() + 600); // 10 min
}

2.1. استفاده از cache برای آرایه‌های قابل رندر (renderable array)

$block['content'] = array(
    '#theme' => 'my_module',
    '#data' => $data,
);
if (user_is_anonymous()) {
  $block['content']['#cache'] = array(
      'cid' => 'cache-key-theme',
      'bin' => 'cache_my_module',
      'expire' => time() + 600, // 10 mins
  );
}

3. پاک کردن cache

cache_clear_all('cache-key', 'cache_active_nodes'); // individual cached data
cache_clear_all(NULL, 'cache_active_nodes'); // all cached data

 

افزودن نظر جدید