كيف يمكنني فارغة دروبال ذاكرة التخزين المؤقت (بدون جمعة)

StackOverflow https://stackoverflow.com/questions/1230261

  •  22-07-2019
  •  | 
  •  

سؤال

كيف يمكنني فارغة دروبال مخابئ:

  • دون في جمعة وحدة
  • دون تشغيل بعض PHP البيان في عقدة جديدة وما إلى ذلك.
  • دون الخوض في قاعدة البيانات نفسها

على نحو فعال, كيف يمكنك إرشاد المستخدم النهائي لمسح له مخابئ ؟

هل كانت مفيدة؟

المحلول

عندما تقوم بتسجيل الدخول كمسؤول (من الواضح أنه ليس كل مستخدم للموقع لديه القدرة على مسح ذاكرة التخزين المؤقت), ، يجب أن تكون هناك صفحة في "الإدارة > تكوين الموقع > الأداء".

وفي أسفل الصفحة، يجب أن يكون هناك زر (شيء مثل "مسح البيانات المخزنة مؤقتا") لمسح ذاكرة التخزين المؤقت

بقدر ما أتذكر، ليست هناك حاجة لشركة Devel للقيام بذلك، ولا تحتاج حقًا إلى الانتقال إلى قاعدة البيانات، أو تشغيل بعض أكواد PHP محلية الصنع.


كمرجع، يمكنك إلقاء نظرة على كيفية مسح ذاكرة التخزين المؤقت من جانب خادم دروبال

نصائح أخرى

يمكنك أيضًا استخدام دراش الوحدة النمطية، والتي تتيح لك استخدام سطر الأوامر لتنفيذ أوامر Drupal الشائعة، مثل "drush cron" أو "drush Cache Clear".

إذا كنت تريد مسح ذاكرة التخزين المؤقت من وحدة نمطية، يمكنك استخدام التعليمة البرمجية التالية.

drupal_flush_all_caches();

لدي الحل الأسهل لذلك.قم بتثبيت وحدة admin_menu (في الواقع، ليس لهذا الغرض فقط، فبمجرد تثبيت هذه الوحدة، لن تندم بالتأكيد، الرابط: http://drupal.org/project/admin_menu).حسنًا، في القائمة المنسدلة العلوية التي ظهرت حديثًا، مرر مؤشر الماوس فوق الرمز المفضل لديك وستظهر القائمة المنسدلة، وسترى:مسح كافة قائمة ذاكرة التخزين المؤقت.نقرة واحدة - تدفق واحد.علاوة على ذلك، يمكنك مسح جميع ذاكرات التخزين المؤقت معًا أو تحديد ما تريد مسحه:الصفحات والقائمة والموضوعات وما إلى ذلك.جرب ولن تعود أبدا )

سيكون أمرًا رائعًا لو تمكنت من الحصول على السلوك عن طريق الضغط على:
http://drupal.local./admin/settings/performance?op=Clear%20cached%20data
لكنك لا تستطيع ذلك.
ومع ذلك، أريد ملاحظة عنوان URL للاختصار من خلال قائمة الإدارة (استخدم الجزء الأخير):
http://drupal.local. /admin/settings/performance

يمكن إجراء المقاصة عند الطلب في الإدارة > تكوين الموقع > الأداء.

يجب عليك إعداد مهمة cron لتعمل كل ساعة (أو أي فاصل زمني حسب رغبتك).

عند تشغيل cron على Drupal، يتم مسح جميع ذاكرات التخزين المؤقت وإعادة بنائها دون الحاجة إلى قيام الإنسان بذلك يدويًا.

إذا كان هذا السؤال يتعلق بالموضوعات، فيجب عليك تعطيل آليات التخزين المؤقت (تجميع css/js) ولن تضطر إلى مسح بيانات ذاكرة التخزين المؤقت عند إجراء تغييرات.

لقد وجدت ما يلي في: http://www.drupalgardens.com/content/clear-all-caches-not-working

هناك طبقة أخرى من التخزين المؤقت حول الموقع الذي "مسح الكل مخابئ" لا يؤثر ، أنت على حق.تلك الطبقة التي متجر المحتوى للمستخدمين المجهولين.

إذا كنت ترغب في تجاوز ذاكرة التخزين المؤقت لأغراض الاختبار, يمكنك إضافة غير المرغوب فيه سلسلة الاستعلام إلى نهاية مسار الموقع.على سبيل المثال ، إذا كنت أردت أن تجاوز ذاكرة التخزين المؤقت على example.drupalgardens.com/foo هل يمكن أن زيارة example.drupalgardens.com/foo?bar=baz أو أي نص عشوائي إعداد ؟ xxxxx=xxxxx.

هذا ساعدني لأنني وضعت القضايا حيث مسح ذاكرة التخزين المؤقت في إطار التكوين > الأداء لا يبدو للمساعدة.

الكود أعلاه مخصص لـ Drupal 6.

بالنسبة إلى Drupal 7، ستكون وحدة ذاكرة التخزين المؤقت على النحو التالي:

<?php 
/**
 * Implementation of hook_menu()
 */
function flush_cache_menu() {
  $items = array();

  $items['flush-cache'] = array(
  'type' => MENU_NORMAL_ITEM,
  'title' => t('Flush the cache'),
  'description' => 'Flush all website caches to make sure it updates to relect '.
    'your recent changes.',
  'page callback' => 'flush_cache_custom_callback',
  'access callback' => user_access('flush cache'),
  );

  return $items;
}

/**
 * Implementation of hook_permission()
 */
function flush_cache_permission() {
  return array(
    'administer my module' => array(
      'title' => t('flush cache module'),
      'description' => t('Content admin flush cache.'),
    ),
  );
}

/**
 * Function that flushes the cache
 */
function flush_cache_custom_callback() {
  drupal_flush_all_caches();
  return 'Caches were flushed.';
}

ملحوظة:ثم تقوم بمسحه بالانتقال إلى:

sitename.com/flush-cache

تأكد من منحهم الإذن في صفحة الإذن.امسح ذاكرة التخزين المؤقت مرة واحدة بالطريقة "العادية" إذا لم يظهر الإذن بعد تشغيل الوحدة.

يُفضل هذا عندما لا تريد أن يتمكن عميلك من الوصول إلى قائمة الإدارة ولكنك لا تزال تريده أن يكون قادرًا على مسح ذاكرة التخزين المؤقت.

ها أنت ذا:

اضطررت إلى إلغاء تثبيت وحدة "devel" (كانت غير متوافقة مع عناصر القائمة الخاصة، والتي كنت أحتاجها بشكل أسوأ)، لذلك قمت بإنشاء وحدة خاصة بي.

في أي مكان ترى فيه MODULENAME، استبدله باسم وحدتك.

الخطوة 1:أضف إلى أي وحدة (ويفضل أن تكون إحدى وحداتك المخصصة) في HOOK_MENU، قبل سطر "إرجاع العناصر $":

// short cut for flushing the caches:
$items['flush-cache'] = array(
  'type' => MENU_CALLBACK,
  'title' => t('Flush the cache'),
  'description' => 'MODULENAME Custom Cache Flush',
  'page callback' => 'MODULENAME_flush_cache',
  'access callback' => TRUE,
);

الخطوة 2:الآن، في نفس ملف الوحدة النمطية، حيث لا يوجد "داخل" أي وظيفة أخرى، أضف:

/**  Page callback  **/
function MODULENAME_flush_cache() {
  drupal_flush_all_caches();
  return 'Caches were flushed.';
}

الآن، يمكنك فقط الانتقال إلى عنوان URL "/flush-cache" على موقعك لمسح ذاكرة التخزين المؤقت.(بعد مسح ذاكرة التخزين المؤقت للمرة الأخيرة بالطريقة القديمة.)

الخطوه 3:إذا كنت تريده مناسبًا حقًا، أضف ما يلي إلى ملف page.tpl.php الخاص بك.يمكنك وضعها في أي مكان تقريبًا بين <body> و </body>.ملحوظة:$my_is_test هو متغير أستخدمه وهو TRUE في نظام الاختبار الخاص بي، وFALSE في الإنتاج.إذا لم يكن لديك شيء من هذا القبيل، فاستبدله بـ TRUE أو FALSE لتشغيله أو إيقاف تشغيله:

<?php if ($my_is_test): ?>
<a style="text-align:left; position:absolute; right:2px; top:20px;" href="<?=$base_path?>flush-cache" onclick="this.innerHTML = '<b><blink><big>Wait...</big></blink></b>';">flush</a>
<? endif; ?>

وفويلا!لديك رابط "تدفق" في الزاوية العلوية اليمنى من كل صفحة يمكنك النقر عليها.لا تتردد في تغيير المبالغ "اليمين" و"العلوي" (أو قم بتغيير "اليمين" إلى "يسار" أو "أعلى" إلى "أسفل" لوضعها أينما تريد.يعمل تحديد موضع الرابط هذا فقط على المتصفحات الحديثة، ولكنه مخصص لك فقط، لذا لا ينبغي أن يمثل مشكلة، أليس كذلك؟

تقوم الوحدة التالية بإنشاء عنصر قائمة لا يمكن الوصول إليه إلا للمستخدمين الذين لديهم إذن "مسح ذاكرة التخزين المؤقت"، والذي توفره هذه الوحدة في صفحة أذونات المستخدم العادية.

/**
 * Implementation of hook_menu()
 */
function flush_cache_menu() {
  $items = array();

  $items['flush-cache'] = array(
  'type' => MENU_NORMAL_ITEM,
  'title' => t('Flush the cache'),
  'description' => 'Flush all website caches to make sure it updates to relect '.
    'your recent changes.',
  'page callback' => 'flush_cache_custom_callback',
  'access callback' => user_access('flush cache'),
  );

  return $items;
}

/**
 * Implementation of hook_perm()
 */
function flush_cache_perm() {
  return array('flush cache');
}

/**
 * Function that flushes the cache
 */
function flush_cache_custom_callback() {
  drupal_flush_all_caches();
  return 'Caches were flushed.';
}

في Drupal 8، وحدة قائمة الإدارة ليست جاهزة للاستخدام بعد.ومن المحتمل أن يتم استبداله بـ Drupal "شريط الأدوات".لذا، لا توجد حاليًا طريقة سهلة لمسح ذاكرة التخزين المؤقت، دون القيام فعليًا بما يلي:

admin/config/development/performance

البديل الوحيد هو إضافة عنصر قائمة في شريط الأدوات الموجود.يمكن القيام بذلك باستخدام هذه الوحدة, ، ولكن كما ترون، لا يزال الأمر بحاجة إلى القليل من العمل.لقد نجحت في ذلك، لكن كان علي إجراء بعض التعديلات.

استخدم drush وهذا الأمر:drush cc جميع

إذا كنت تستخدم Boost للتخزين المؤقت، فيجب أن تكون أكثر تحديدًا:

drush @alias_name cc all
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top