ในการพัฒนาแพลตฟอร์มแคชอาจเจ็บปวด ฉันสามารถปิดได้ไหม มันจะมีผลกับโมดูลที่ต้องการหรือไม่
ในการพัฒนาแพลตฟอร์มแคชอาจเจ็บปวด ฉันสามารถปิดได้ไหม มันจะมีผลกับโมดูลที่ต้องการหรือไม่
คำตอบ:
ติดตั้งโมดูล develซึ่งเพิ่มตัวเลือกการล้างแคชสำหรับผู้ดูแลระบบ คุณจะพบบล็อก devel เพื่อเพิ่มพื้นที่สำหรับการล้างแคชอย่างรวดเร็วหรือถ้าคุณติดตั้งเมนูผู้ดูแลระบบและรับเมนูลัดที่ด้านบนซ้ายเพื่อล้างแคชต่าง ๆ ใน Drupal
ถ้าคุณชอบบรรทัดคำสั่งติดตั้งdrushและใช้drush cc all
คำสั่งเพื่อล้างแคชไซต์ของคุณ ระวังว่าในปัจจุบัน drush cc ไม่ได้ล้างแคช Varnish ถ้ามันใช้ได้กับการตั้งค่าของคุณ
หากคุณกำลังใช้ Drupal 7 คุณสามารถตั้งค่าแคชให้ใช้ DrupalFakeCache ได้ตลอดเวลาซึ่งโดยปกติจะใช้ระหว่างกระบวนการติดตั้งเท่านั้น หากต้องการตั้งค่าให้วางข้อมูลโค้ดต่อไปนี้ใน settings.php ของคุณ:
include_once(DRUPAL_ROOT . '/includes/cache.inc');
include_once(DRUPAL_ROOT . '/includes/cache-install.inc');
$conf['cache_default_class'] = 'DrupalFakeCache';
หน้า 'ประสิทธิภาพ' ในการดูแลระบบ> การกำหนดค่าไซต์จะช่วยให้คุณเปิดใช้งาน / ปิดใช้งานการแคชองค์ประกอบของไซต์ที่เลือก เท็มเพลตธีมมักจะถูกเก็บถาวรมากขึ้น แต่สามารถล้างออกได้ภายในหน้า 'ประสิทธิภาพ' เดียวกัน
โมดูล 'เมนูการดูแลระบบ' จะให้ทางลัดในแถบเครื่องมือหากจำเป็นต้องล้างแคชอย่างสม่ำเสมอมากขึ้น - ในระหว่างการพัฒนาธีมฉันพบว่าตัวเองล้างข้อมูลอยู่ตลอดเวลา
เท่าที่ฉันรู้ไม่มีโมดูลใด ๆ ที่ต้องการแคช หากคุณไม่ต้องการที่จะปิดคุณสามารถล้างมันในSite Settings > Performance
ส่วน
แม้จะปิดใช้งานการแคช Drupal จะไม่รู้จักไฟล์ใหม่ที่เพิ่มเข้ากับธีมจนกว่าคุณจะล้างแคช
มีข้อมูลเกี่ยวกับวิธีต่างๆในการล้างแคชที่Drupal.org
นอกเหนือจากวิธีการที่Steve H กล่าวถึงการใช้โมดูลDevelจะเปิดตัวเลือกเพิ่มเติมอีกสองสามตัวรวมถึง:
ด้วยโมดูล Devel และการปิดการแคชภายใต้ประสิทธิภาพแคชหลักอื่น ๆ ที่คุณจะพบในการพัฒนาประจำคือเราเตอร์เมนูซึ่งสามารถสร้างใหม่ได้โดยใช้ Devel หรือ Admin Menu ตามที่ Steve พูดถึง
สิ่งสำคัญที่ควรทราบคือถ้าคุณมีสไตล์ชีทมากมาย (ไม่ว่าจะเป็นจากธีมของคุณหรือจากโมดูล) การปิดการเพิ่มประสิทธิภาพไฟล์ CSS มีโอกาสที่จะทำให้ไซต์แตกใน IE
แม้ว่าจะไม่ได้แคชจริง ๆ มันอยู่ในหน้าการตั้งค่าเดียวกันและมักใช้กับการแคช
ลิงก์ "ล้างแคชทั้งหมด" ในโมดูลเมนูผู้ดูแลระบบนั้นยอดเยี่ยมมาก
หากคุณกำลังใช้ Drupal 6 โมดูล" Cache Disable " จะมีประโยชน์สำหรับงานนั้นหากคุณไม่ต้องการ [ด้วยเหตุผลบางอย่าง] ในการติดตั้งโมดูลที่หนักกว่าเช่น Devel
คำถามเก่า แต่ฉันเพิ่งเห็นมันโผล่ขึ้นมาในฐานะที่เกี่ยวข้องกับการค้นหาที่ฉันทำ
วิธีการล้างแคชเกือบทั้งหมดจบลงด้วยการเรียกdrupal_flush_all_cachesในตอนท้าย คุณสามารถเล่นกับการโทรนี้ในสถานการณ์ต่าง ๆ ในรหัสของคุณเอง
จำนวนแคชที่ใช้กับ Drupal บางครั้งอาจบ้า
นี่คือวิธีการทั่วไปในการปิดและล้างแคชของ Drupal และเชื่อมโยงกับมัน
ปิดการใช้งานแคช:
โปรดทราบว่าคุณไม่สามารถปิดการใช้งานแคชทั้งหมดได้เนื่องจาก Drupal จำเป็นต้องใช้บางส่วน
นี่คือวิธีปิดใช้งานแคชโดยเพิ่มบรรทัดต่อไปนี้ในไฟล์การตั้งค่าของคุณ:
// Disable caches
$conf['cache'] = 0;
$conf['block_cache'] = 0;
$conf['views_skip_cache'] = TRUE;
$conf['page_compression'] = 0;
$conf['preprocess_css'] = 0;
$conf['preprocess_js'] = 0;
หากคุณปิดใช้งานแคชทั้งหมดเว็บไซต์ของคุณจะช้ามากดังนั้นจึงไม่แนะนำให้ใช้กับสภาพแวดล้อมอื่นยกเว้นเครื่องพัฒนาของคุณ
แคชที่ชัดเจน
XCache
ล้างแคช XCache หากใช้:
drush eval "function_exists('xcache_clear_cache') && xcache_clear_cache();"
หรือล้างแคชใน XCache ในแผงควบคุม (/ xcache-admin) หากด้านบนไม่ทำงาน
eAccelerator
drush eval "function_exists('accelerator_reset') && accelerator_reset();"
APC
drush eval "function_exists('apc_clear_cache') && apc_clear_cache();"
OPCache
ล้าง PHP OPCache หากใช้กับ PHP> = 5.5
drush eval "function_exists('opcache_reset') && opcache_reset();"
หมายเหตุ: คำสั่งดังกล่าวจะ CLI แคชไม่ชัดเจนสำหรับ Apache เป็นต่อ: Opcache - แคชสะอาดใน PHP5.4 และล่าง
memcached
หากคุณใช้ memcached คุณควรล้างรีสตาร์ทหรือฆ่า memcached ด้วยวิธีใดวิธีหนึ่งต่อไปนี้:
ในฐานะผู้ใช้ (หนึ่งในนั้น):
echo flush_all > /dev/tcp/127.0.0.1/11211
echo flush_all | nc localhost 11211 # Flush Contents Of a Memcached Server
ในฐานะที่เป็นรูท (หนึ่งในนั้น):
/etc/init.d/rc.d/memcached restart
service memcached restart
killall memcached # It's automatically restarted on OSX.
แนะนำให้ติดตั้งโมดูล memcached ด้วยบรรทัดต่อไปนี้ในไฟล์การตั้งค่าของคุณ:
$conf['cache_backends'][] = 'sites/all/modules/contrib/memcache/memcache.inc';
ดังนั้นแคช Memcached จะถูกล้างในแคชล้างมาตรฐานของ Drupal
เคลือบเงา
หากคุณใช้ Varnish แนะนำให้ติดตั้งโมดูลVarnishแล้วตั้งค่าบรรทัดต่อไปนี้ในไฟล์การตั้งค่าของคุณ:
$conf['cache_backends'][] = 'sites/all/modules/contrib/varnish/varnish.cache.inc';
ดังนั้นวานิชแคชก็จะถูกล้างออกด้วยกันบน Drupal clear cache
อีกวิธีหนึ่งคุณอาจใช้ curl เพื่อล้างหน้าด้วยตนเอง:
curl -X PURGE -H "Host: domain.com" http://127.0.0.1/node/123
อ่านเพิ่มเติม: ฉันจะล้างแคชวานิชได้อย่างไร
Drupal
ล้างแคช Drupal ผ่าน Drush:
drush cc all
echo "SHOW TABLES LIKE 'cache%'" | $(drush sql-connect) | tail -n +2 | xargs -L1 -I% echo "DELETE FROM %;" | $(drush sql-connect) -v
drush eval 'menu_rebuild();'
คุณสามารถทำเช่นเดียวกันที่ / admin / config / development / performance เนื่องจากบางครั้งแคช UI จะถูกล้างด้วยวิธีที่ดีกว่าจาก CLI
นี่คือเชลล์สคริปต์ที่มีประโยชน์สำหรับล้างแคชทั้งหมด:
#!/bin/bash
set -o xtrace
echo "SHOW TABLES LIKE 'cache%'" | $(drush sql-connect) | tail -n +2 | xargs -L1 -I% echo "DELETE FROM %;" | $(drush sql-connect) -v
echo 'flush_all' | nc localhost 11211 # Flush Contents Of a Memcached Server
drush eval "function_exists('opcache_reset') && opcache_reset(); function_exists('xcache_clear_cache') && xcache_clear_cache();"
drush eval 'menu_rebuild();'
set -o xtrace -
echo done.
เราสามารถใช้หนึ่งในวิธีต่อไปนี้เพื่อล้างแคชใน drupal
1. ) เราสามารถเข้าไปที่ url your_domain / admin / config / development / performance และคลิกปุ่มล้างแคช
2. ) ถ้าเราติดตั้งโมดูล drush เราสามารถล้างแคชได้ด้วย คำสั่งdrush cc ทั้งหมดนี้
3. ) หากเรามีการเข้าถึงฐานข้อมูลเราสามารถล้างแคชด้วยคำสั่งต่อไปนี้ (ไม่แนะนำให้เข้าถึงฐานข้อมูลการผลิตโดยตรงอย่างเด็ดขาดใช้ทางเลือกใดทางเลือกหนึ่งแทนหากเว็บไซต์ของคุณเป็น "สด")
ตัดตารางแคช;
ตัดทอนตาราง cache_block;
ตัดทอนตาราง cache_bootstrap;
ตัดตาราง cache_field;
ตัดทอนตาราง cache_filter;
ตัดทอนตาราง cache_form; // สังเกตความแตกต่างที่สำคัญจากตาราง cache_ * อื่น ๆ - ดูข้อมูลเพิ่มเติมด้านล่าง
ตัดทอนตาราง cache_image;
ตัดทอนตาราง cache_menu;
ตัดตาราง cache_page;
ตัดตาราง cache_path;
ตัดตารางแคช _token;
TRUNCATE TABLE cache_update;
4. ) นอกจากนี้เรายังสามารถเขียนแบบสอบถามในไฟล์โมดูลของเรา db_query ("DELETE FROM {cache};");
5. ) เราสามารถใช้ drupal api สำหรับล้างแคชเช่น cache_clear_all ()
6. ) เรายังสามารถล้างแคชโดยโมดูล devel ติดตั้งโมดูล devel และเปิดใช้งาน "นักพัฒนา / บล็อกการพัฒนา" โดยนี้เราสามารถล้างแคช
ข้อมูลเพิ่มเติมเกี่ยวกับ cache_form ซึ่งมีวัตถุประสงค์ที่แตกต่างจากตารางcache_ อื่น ๆ :
core api docs สำหรับ drupal_flush_all_caches () พูดว่า "อย่าล้างแคช_form - การส่งแบบฟอร์มที่อยู่ระหว่างดำเนินการอาจไม่สมบูรณ์" ข้อกังวลนี้มีผลเฉพาะกับไซต์ที่มีผู้ใช้ที่ใช้งานอยู่และไม่ใช่เวอร์ชันการพัฒนา
วิธีการอื่น ๆ ในการล้างแคชที่อธิบายไว้ในโพสต์นี้จะไม่ส่งผลกระทบต่อ cache_form
ถ้าคุณต้องการลดขนาดของ cache_form บนไซต์ที่ใช้งานจริงดูที่ขนาดตารางฟอร์มแคชมีขนาดใหญ่มาก