มีสคริปต์ drush เพื่อปิดใช้งานแคชทั้งหมดหรือไม่


19

ฉันหมายถึงตัวเลือกแคชทั้งหมดภายใต้ผู้ดูแลระบบ / การตั้งค่า / ประสิทธิภาพ ฉันมักใช้ drush sql-sync บ่อยครั้งเพื่อให้สำเนาการพัฒนาของฉันทันสมัยกับเซิร์ฟเวอร์ อย่างไรก็ตามเซิร์ฟเวอร์จะต้องเปิดแคชทั้งหมดอย่างชัดเจน

ดังนั้นฉันจึงสงสัยว่า: ฉันต้องไปที่ admin / settings / performance ทุกครั้งที่ฉันอัพเดต db ของฉันหรือไม่ หรือมีสคริปต์ Drush สำหรับสิ่งนั้น?


1
เพียงคำอธิบายสั้น ๆ : คำตอบ chx ดีที่สุดเนื่องจากใช้เวลาเพียง 'drush en cache_disable - ใช่' GApple เข้ามาใกล้จริงๆเพราะมันสามารถแก้ไขปัญหาได้ในทุกครั้งถึงแม้ว่ามันอาจจะทำร้ายมือใหม่ doublejoice เสนอสคริปต์ที่มีชีวิตชีวาและเป็นคำตอบที่ยอดเยี่ยมสำหรับคำถามของฉันแม้ว่าอีกสองคนนั้นจะดีกว่าก็ตาม
Capi Etheriel

คำตอบ:


6

https://drupal.org/node/797346สำหรับ D7 สำหรับ D6 ให้https://drupal.org/project/cache_disableแต่จะแบ่งแคชแบบฟอร์ม หนึ่งต้องแก้ไขให้ตกไปยังแคช DB สำหรับแคชแบบฟอร์ม และอาจอัปเดตแคชสถานะด้วย


ฉันจะให้มันดูและดูว่าฉันสามารถแก้ไขได้ ขอบคุณมากสำหรับเคล็ดลับ :)
Capi Etheriel

17

คุณต้องตั้งค่าตัวแปรหลายตัวเพื่อปิดการแคชบนไซต์ dev ของคุณ ...

 drush vset cache 0
 drush vset preprocess_css 0
 drush vset preprocess_js 0
 drush vset page_cache_maximum_age 0
 drush vset views_skip_cache TRUE

จะง่ายยิ่งขึ้นถ้าคุณมีการกำหนดค่าตามเงื่อนไขในไฟล์ settings.php ของคุณ จากนั้นคุณสามารถรีเฟรช DB และการเปลี่ยนแปลงจะติดอยู่!

$conf['cache'] = 0; // Page cache $conf['page_cache_maximum_age'] = 0; // External cache TTL $conf['preprocess_css'] = FALSE; // Optimize css $conf['preprocess_js'] = FALSE; // Optimize javascript $conf['views_skip_cache'] = TRUE; // Views caching

... แม้ว่าคุณจะปิดการแคชต่าง ๆ ผ่านทาง UI ของผู้ดูแลระบบและล้างแคชอีกครั้งคุณก็สามารถจัดรูปแบบได้โดยไม่ต้องปิดส่วนที่เหลือ ... เนื่องจากสคริปต์มีโอกาสน้อยที่จะเปลี่ยนแปลง


นอกจากนี้คุณยังสามารถยกเว้นไฟล์ settings.php ของคุณจากที่เก็บรหัสการ$conf = array( 'cache' => FALSE, //page cache 'block_cache' => FALSE, //block cache 'preprocess_css' => FALSE, //optimize css 'preprocess_js' => FALSE, //optimize javascript 'environment' => 'development' );
พุช

คำแนะนำเพิ่มเติม ...$conf['cache'] = 0; $conf['page_cache_maximum_age'] = 0; $conf['block_cache'] = FALSE; $conf['preprocess_css'] = FALSE; $conf['preprocess_js'] = FALSE; $conf['views_skip_cache'] = TRUE;
doublejosh

11

คุณสามารถใช้ไฟล์ settings.phpของคุณเพื่อตั้งค่าตัวแปรอย่างชัดเจนเพื่อแทนที่การตั้งค่าฐานข้อมูลของคุณ ค่าจะถูกล็อคเป็นค่าที่ตั้งไว้ในไฟล์และไม่สามารถเปลี่ยนแปลงได้ผ่านส่วนต่อประสานผู้ดูแลระบบ
ในตอนท้ายของไฟล์เริ่มต้นเป็นส่วนที่เริ่มต้น:

/**
 * Variable overrides:
 *
 * To override specific entries in the 'variable' table for this site,
 * set them here. You usually don't need to use this feature. This is
 * useful in a configuration file for a vhost or directory, rather than
 * the default settings.php. Any configuration setting from the 'variable'
 * table can be given a new value. Note that any values you provide in
 * these variable overrides will not be modifiable from the Drupal
 * administration interface.
 *
 * Remove the leading hash signs to enable.
 */
# $conf = array(
#   'site_name' => 'My Drupal site',
#   'theme_default' => 'minnelli',
#   'anonymous' => 'Visitor',

ดังนั้นเพื่อให้หน้าปิดการใช้งาน JS และแคช CSS, ชุดcache, preprocess_jsและpreprocess_cssทุกคนที่จะ'0'

$conf = array(
  'cache' => '0',
  'preprocess_css' => '0',
  'preprocess_js' => '0',
);

เครื่องหมายวงเล็บปิดสำหรับการประกาศอาร์เรย์คือบรรทัดสุดท้ายของไฟล์เริ่มต้นหลังจากบล็อกข้อคิดเห็นเพิ่มเติมอีกสองสามบล็อกดังนั้นโปรดอย่าใส่เครื่องหมายข้อคิดเห็นไว้ที่นั่นแทนที่จะเพิ่มใหม่ ตรวจสอบให้แน่ใจด้วยว่าคุณไม่มี$confประกาศอีกฉบับที่จะขัดแย้งกัน


2

คุณสามารถใช้ไฟล์ aliases drush บนเซิร์ฟเวอร์ dev ของคุณและตั้งค่าเพื่อข้ามตารางแคชเมื่อคุณเรียกใช้ sql-sync ต่อไปนี้จะสร้างนามแฝงสำหรับเซิร์ฟเวอร์ dev ในพื้นที่ของคุณและเซิร์ฟเวอร์ระยะไกลของคุณ:

$aliases['dev'] = array(
    'root' => '/var/www/devroot',
);

$aliases['live'] = array(
    'root' => '/var/www/liveroot',
    'remote-host' => 'www.mysite.com',
    'remote-user' => 'exampleuser',
    'command-specific' => array (
       'sql-sync' => array (
         'skip-tables-list' => 'cache,cache_menu',
       ),
    ),
);

หากคุณบันทึกสิ่งนั้นไว้ในไดเรกทอรีหลักของคุณที่

~/.drush/mysite.aliases.drushrc.php

จากนั้นคุณสามารถเรียกคำสั่ง sql-sync ของคุณเช่นนี้:

drush sql-sync @mysite.live @mysite.dev

และควรข้ามตารางแคช (เห็นได้ชัดว่าฉันอยู่ในรายการที่ 2 เท่านั้น แต่คุณสามารถใส่อะไรลงไปในนั้นได้ฉันยังเพิ่ม watchdog ด้วย)

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับนามแฝงและตัวเลือกต่างๆให้ดูไฟล์ตัวอย่างในการติดตั้ง drush ของคุณที่ drush / samples / example.aliases.drushrc.php

ในฐานะโน้ตสุดท้ายสำหรับทุกคนที่พยายามใช้ sql-sync ฉันมีปัญหาการตรวจสอบสิทธิ์เมื่อฉันเรียกใช้ครั้งแรกดังนั้นหากมีคนพยายามทำเช่นนี้และได้รับข้อผิดพลาดเกี่ยวกับกุญแจสาธารณะ / ส่วนตัวให้ทำดังนี้

drush dl drush_extras
drush pushkey @mysite.live
drush @mysite.live status

คำสั่ง pushkey จาก drush_extras สร้างคู่คีย์ส่วนตัว / สาธารณะและส่งคีย์สาธารณะไปยังเซิร์ฟเวอร์ที่ใช้งานจริง คำสั่งสุดท้ายคือเพียงเพื่อตรวจสอบว่ามันทำงาน


ขอบคุณคำตอบยอดเยี่ยม แต่ปัญหาของฉันคือสภาพแวดล้อมการพัฒนาของฉันควรปิดแคชและฉันต้องการหลีกเลี่ยงการเยี่ยมชมผู้ดูแลระบบ / การตั้งค่า / ประสิทธิภาพทุกครั้งที่ฉันอัพเดต
Capi Etheriel

1

ฉันได้เขียนคำสั่ง drush ซึ่งเปิด / ปิดการใช้งานตัวเลือกทั้งหมดต่อไปนี้:

cache
cache_lifetime
page_cache_maximum_age
preprocess_css
preprocess_js

ตัวอย่างและรหัสสามารถพบได้ที่นี่: http://ourlife01.blogspot.gr/2015/05/drush-command-to-enabledisable-cache.html

ดังนั้นเพื่อปิดการใช้งานตัวเลือกทั้งหมดข้างต้นคุณเพียงแค่เรียกใช้:

drush cache-disable

คำสั่ง:

drush cache-enable

เหมือนกับการตั้งค่าตัวแปรให้เป็นค่า:

cache: TRUE
cache_lifetime: 1 minute
page_cache_maximum_age: 1 hour
preprocess_css: TRUE
preprocess_js: TRUE

เป็นสิ่งที่ดีมาก แต่มันมีความคิดเห็นของตัวเองเมื่อเปิดใช้งานแคชอีกครั้ง อาจเป็นการดีกว่าที่จะบันทึกค่าก่อนหน้านี้เมื่อปิดใช้งานแคชหรือเพียงแค่ถามผู้ใช้ผ่านทางพรอมต์ CLI
Capi Etheriel

คุณถูก @barraponto ฉันแก้ไขสคริปต์และฉันได้เพิ่มความช่วยเหลือเช่นกัน drush cache-enable min maxคำสั่งใหม่ ตรวจสอบ URL ด้านบน
ไซเบอร์

รุ่นใหม่เปิด / ปิดการใช้งานblock cacheได้เป็นอย่างดี ..
cyberp

น่ากลัว คุณหยุดการเผยแพร่ใน drupal.org อะไร
Capi Etheriel

เวลา! ผมไม่ทราบว่าจะทำ :)
cyberp

1

นอกจากนี้คุณสามารถปิดการใช้งานแคชด้านล่างบรรทัดวางไว้ในsettings.phpไฟล์

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