ฉันกำลังกำหนดค่าการวางจำหน่ายโดยอัตโนมัติโดย bootstrapping Mage ในหลาย ๆ สคริปต์ ในตอนท้ายของสคริปต์ฉันต้องล้างแคชของ Magento
มีวิธีล้างแคชโดยใช้หนึ่งในMage
คลาสหรือวิธีการหรือไม่
ฉันกำลังกำหนดค่าการวางจำหน่ายโดยอัตโนมัติโดย bootstrapping Mage ในหลาย ๆ สคริปต์ ในตอนท้ายของสคริปต์ฉันต้องล้างแคชของ Magento
มีวิธีล้างแคชโดยใช้หนึ่งในMage
คลาสหรือวิธีการหรือไม่
คำตอบ:
โปรดลองรหัสต่อไปนี้เพื่อล้างแคชโดยทางโปรแกรม
Mage::app()->cleanCache()
หรือ
Mage::app()->getCacheInstance()->flush();
หากคุณต้องการจริง ๆ คุณสามารถล้างแคชได้หนึ่งประเภทขึ้นไป นี่คือวิธีที่ส่วนผู้ดูแลระบบทำ ภายใต้Mage_Adminhtml_CacheController::massRefreshAction
คุณจะเห็นว่ามันวนรอบพารามิเตอร์ทั้งหมดtypes
และเรียกต่อไปนี้
$tags = Mage::app()->getCacheInstance()->cleanType($type);
Mage::dispatchEvent('adminhtml_cache_refresh_type', array('type' => $type));
$updatedTypes++;
ประเภทที่เป็นไปได้มีดังนี้:
และสามารถส่งคืนได้โดยโทร Mage::app()->getCacheInstance()->getTypes()
สคริปต์ภายนอกที่รวดเร็วเพื่อล้างแคชทั้งหมด:
<?php
require_once './app/Mage.php';
umask(0);
Mage::app('default');
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
try {
$allTypes = Mage::app()->useCache();
foreach($allTypes as $type => $value) {
Mage::app()->getCacheInstance()->cleanType($type);
Mage::dispatchEvent('adminhtml_cache_refresh_type', array('type' => $type));
echo "{$type} </br>";
}
echo 'done';
} catch (Exception $e) {
echo $e->getMessage();
}
เราสามารถใช้n98-magerunได้ โดยเฉพาะอย่างยิ่งเนื่องจากคุณไม่ควรล้างแคชระหว่างการเรียกใช้สคริปต์การปรับใช้ ดูคำsys:setup:incremental
สั่งย่อยเพื่อดูการดำเนินการควบคุมสคริปต์การตั้งค่า Magento ได้อย่างมีประสิทธิภาพยิ่งขึ้น
หากคุณต้องการล้างการจัดเก็บแคชทั้งหมดหมายถึงใช้รหัสต่อไปนี้
Mage::app()->getCacheInstance()->flush();
ที่นี่ฟังก์ชั่นล้างเรียกฟังก์ชั่นแคช magento เริ่มต้นหากคุณต้องการคำชี้แจงเพิ่มเติมหมายถึงการอ้างอิง URL ต่อไป