ฉันสามารถปิดแคชสำหรับการปรับใช้การพัฒนาหรือไม่


22

ในการพัฒนาแพลตฟอร์มแคชอาจเจ็บปวด ฉันสามารถปิดได้ไหม มันจะมีผลกับโมดูลที่ต้องการหรือไม่

คำตอบ:


19

ติดตั้งโมดูล develซึ่งเพิ่มตัวเลือกการล้างแคชสำหรับผู้ดูแลระบบ คุณจะพบบล็อก devel เพื่อเพิ่มพื้นที่สำหรับการล้างแคชอย่างรวดเร็วหรือถ้าคุณติดตั้งเมนูผู้ดูแลระบบและรับเมนูลัดที่ด้านบนซ้ายเพื่อล้างแคชต่าง ๆ ใน Drupal

ถ้าคุณชอบบรรทัดคำสั่งติดตั้งdrushและใช้drush cc allคำสั่งเพื่อล้างแคชไซต์ของคุณ ระวังว่าในปัจจุบัน drush cc ไม่ได้ล้างแคช Varnish ถ้ามันใช้ได้กับการตั้งค่าของคุณ


9

หากคุณกำลังใช้ 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';

4

หน้า 'ประสิทธิภาพ' ในการดูแลระบบ> การกำหนดค่าไซต์จะช่วยให้คุณเปิดใช้งาน / ปิดใช้งานการแคชองค์ประกอบของไซต์ที่เลือก เท็มเพลตธีมมักจะถูกเก็บถาวรมากขึ้น แต่สามารถล้างออกได้ภายในหน้า 'ประสิทธิภาพ' เดียวกัน

โมดูล 'เมนูการดูแลระบบ' จะให้ทางลัดในแถบเครื่องมือหากจำเป็นต้องล้างแคชอย่างสม่ำเสมอมากขึ้น - ในระหว่างการพัฒนาธีมฉันพบว่าตัวเองล้างข้อมูลอยู่ตลอดเวลา


4

เท่าที่ฉันรู้ไม่มีโมดูลใด ๆ ที่ต้องการแคช หากคุณไม่ต้องการที่จะปิดคุณสามารถล้างมันในSite Settings > Performanceส่วน

แม้จะปิดใช้งานการแคช Drupal จะไม่รู้จักไฟล์ใหม่ที่เพิ่มเข้ากับธีมจนกว่าคุณจะล้างแคช

มีข้อมูลเกี่ยวกับวิธีต่างๆในการล้างแคชที่Drupal.org


4

นอกเหนือจากวิธีการที่Steve H กล่าวถึงการใช้โมดูลDevelจะเปิดตัวเลือกเพิ่มเติมอีกสองสามตัวรวมถึง:

  • การสร้างชุดรูปแบบแคชใหม่ในทุก ๆ หน้าโหลด (มีประโยชน์หากคุณกำลังทำงานกับไฟล์เทมเพลต)
  • บล็อกที่จะช่วยให้เข้าถึงฟังก์ชั่นแคชเปล่าและฟังก์ชั่นการติดตั้งใหม่ได้ง่าย

ด้วยโมดูล Devel และการปิดการแคชภายใต้ประสิทธิภาพแคชหลักอื่น ๆ ที่คุณจะพบในการพัฒนาประจำคือเราเตอร์เมนูซึ่งสามารถสร้างใหม่ได้โดยใช้ Devel หรือ Admin Menu ตามที่ Steve พูดถึง


4

สิ่งสำคัญที่ควรทราบคือถ้าคุณมีสไตล์ชีทมากมาย (ไม่ว่าจะเป็นจากธีมของคุณหรือจากโมดูล) การปิดการเพิ่มประสิทธิภาพไฟล์ CSS มีโอกาสที่จะทำให้ไซต์แตกใน IE

แม้ว่าจะไม่ได้แคชจริง ๆ มันอยู่ในหน้าการตั้งค่าเดียวกันและมักใช้กับการแคช

ลิงก์ "ล้างแคชทั้งหมด" ในโมดูลเมนูผู้ดูแลระบบนั้นยอดเยี่ยมมาก


หากคุณกังวลเกี่ยวกับ IE คุณสามารถใช้drupal.org/project/ie_css_optimizer
realityloop

3

หากคุณกำลังใช้ Drupal 6 โมดูล" Cache Disable " จะมีประโยชน์สำหรับงานนั้นหากคุณไม่ต้องการ [ด้วยเหตุผลบางอย่าง] ในการติดตั้งโมดูลที่หนักกว่าเช่น Devel


2

คำถามเก่า แต่ฉันเพิ่งเห็นมันโผล่ขึ้นมาในฐานะที่เกี่ยวข้องกับการค้นหาที่ฉันทำ

วิธีการล้างแคชเกือบทั้งหมดจบลงด้วยการเรียกdrupal_flush_all_cachesในตอนท้าย คุณสามารถเล่นกับการโทรนี้ในสถานการณ์ต่าง ๆ ในรหัสของคุณเอง


2

จำนวนแคชที่ใช้กับ 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.

3
OPCache จะไม่ทำงานจาก CLI ตัวอย่างเช่นดูการอธิบายเกี่ยวกับ: stackoverflow.com/questions/17716639/…
LarS

0

เราสามารถใช้หนึ่งในวิธีต่อไปนี้เพื่อล้างแคชใน 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 บนไซต์ที่ใช้งานจริงดูที่ขนาดตารางฟอร์มแคชมีขนาดใหญ่มาก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.