Có một kịch bản drush để vô hiệu hóa tất cả các bộ nhớ cache?


19

Tôi có nghĩa là tất cả các tùy chọn bộ đệm trong quản trị / cài đặt / hiệu suất. Tôi thường xuyên sử dụng drush sql-sync để giữ cho bản sao phát triển của tôi được cập nhật với máy chủ. Tuy nhiên, rõ ràng máy chủ phải bật tất cả bộ nhớ cache.

Vì vậy, tôi tự hỏi: tôi phải truy cập quản trị / cài đặt / hiệu suất mỗi khi tôi cập nhật db của mình? Hoặc có một kịch bản Drush cho điều đó?


1
chỉ là một lời giải thích ngắn gọn: câu trả lời chx là tốt nhất vì tất cả những gì nó cần là 'drush en cache_disable --yes'. GApple thực sự rất gần, vì nó giải quyết vấn đề một lần và mãi mãi, mặc dù nó có thể làm tổn thương người mới. doublejoice thực sự đề xuất một kịch bản drush, và là một câu trả lời tuyệt vời cho câu hỏi của tôi, mặc dù hai cái còn lại thậm chí còn tốt hơn.
Capi Etheriel

Câu trả lời:


6

https://drupal.org/node/797346 cho D7. Đối với D6, https://drupal.org/project/cache_disable nhưng nó phá vỡ bộ đệm của biểu mẫu. Người ta cần vá nó để rơi vào bộ đệm DB cho bộ đệm ẩn mẫu. Và có lẽ cập nhật bộ nhớ cache trạng thái quá.


Tôi sẽ cung cấp cho nó một cái nhìn và xem nếu tôi có thể vá nó. cảm ơn rất nhiều vì tiền boa :)
Capi Etheriel

17

Bạn cần đặt một số biến để tắt bộ đệm ẩn trên trang dev của bạn ...

 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

Nó thậm chí còn dễ dàng hơn nếu bạn có cấu hình có điều kiện trong tệp settings.php. Sau đó, bạn có thể làm mới DB và các thay đổi sẽ tiếp tục!

$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

... mặc dù nếu bạn chỉ tắt các bộ đệm khác nhau thông qua giao diện người dùng quản trị viên và xóa bộ nhớ cache một lần thì bạn có thể tắt chủ đề mà không tắt phần còn lại ... vì tập lệnh ít có khả năng thay đổi.


Bạn cũng có thể loại trừ tệp settings.php của mình khỏi kho lưu trữ mã đẩy của bạn để sản xuất và thêm các cài đặt này ...$conf = array( 'cache' => FALSE, //page cache 'block_cache' => FALSE, //block cache 'preprocess_css' => FALSE, //optimize css 'preprocess_js' => FALSE, //optimize javascript 'environment' => 'development' );
doublejosh

Thêm đề xuất ...$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

Bạn có thể sử dụng tệp settings.php để đặt các biến rõ ràng để ghi đè cài đặt cơ sở dữ liệu của bạn. Các giá trị sẽ bị khóa với bất cứ thứ gì được đặt trong tệp và không thể thay đổi thông qua giao diện quản trị.
Ở cuối tập tin mặc định là phần bắt đầu:

/**
 * 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',

Vì vậy, để trang disable, JS và CSS bộ nhớ đệm, bộ cache, preprocess_jspreprocess_csstất cả mọi người'0'

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

Dấu ngoặc đơn đóng cho khai báo mảng là dòng cuối cùng của tệp mặc định, sau một vài khối nhận xét khác, vì vậy hãy đảm bảo bỏ ghi chú ở đó thay vì thêm một tệp mới. Ngoài ra, hãy đảm bảo rằng bạn không có $conftuyên bố khác sẽ xung đột.


2

Bạn luôn có thể sử dụng tệp bí danh drush trên máy chủ dev của mình và thiết lập nó để bỏ qua các bảng bộ đệm khi bạn chạy sql-sync. Sau đây sẽ tạo bí danh cho máy chủ dev cục bộ và máy chủ trực tiếp từ xa của bạn:

$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',
       ),
    ),
);

Nếu bạn đã lưu nó trong thư mục nhà của bạn tại:

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

sau đó bạn có thể gọi lệnh sql-sync như vậy:

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

và nó nên bỏ qua các bảng bộ đệm (rõ ràng tôi chỉ liệt kê 2 ở đó, nhưng bạn có thể đặt bất cứ thứ gì vào đó, tôi thậm chí còn thêm watchdog vào).

Để biết thêm thông tin về bí danh và tất cả các tùy chọn khác nhau, hãy xem tệp ví dụ trong cài đặt drush của bạn tại drush / example / example.aliases.drushrc.php

Như một lưu ý cuối cùng cho bất kỳ ai thử sử dụng đồng bộ hóa sql, tôi đã gặp sự cố xác thực khi lần đầu chạy nó, vì vậy nếu ai đó thử điều này và gặp lỗi về khóa công khai / riêng tư thì hãy làm như sau:

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

Lệnh Pushkey từ drush_extras tạo cặp khóa riêng / chung và đẩy khóa chung vào máy chủ trực tiếp. Lệnh cuối cùng chỉ là để kiểm tra xem nó đã hoạt động.


cảm ơn, câu trả lời là tuyệt vời nhưng vấn đề của tôi là môi trường phát triển của tôi nên tắt bộ nhớ cache và tôi muốn tránh truy cập quản trị / cài đặt / hiệu suất mỗi khi tôi cập nhật.
Capi Etheriel

1

Tôi đã viết một lệnh drush cho phép / vô hiệu hóa tất cả các tùy chọn sau:

cache
cache_lifetime
page_cache_maximum_age
preprocess_css
preprocess_js

Ví dụ và mã có thể được tìm thấy ở đây: http://ourlife01.blogspot.gr/2015/05/drush-command-to-enablesisable-cache.html

Vì vậy, để vô hiệu hóa tất cả các tùy chọn trên, bạn chỉ cần chạy:

drush cache-disable

Lệnh:

drush cache-enable

giống như đặt các biến thành các giá trị:

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

Điều đó thật tuyệt, nhưng nó có ý kiến ​​riêng khi kích hoạt lại bộ đệm. Có lẽ sẽ tốt hơn nếu lưu giá trị trước đó khi tắt bộ đệm hoặc chỉ hỏi người dùng thông qua lời nhắc CLI.
Capi Etheriel

Bạn nói đúng @barraponto, tôi đã sửa đổi tập lệnh và tôi cũng đã thêm trợ giúp. Lệnh mới là drush cache-enable min max. Kiểm tra URL trên.
gian mạng

Phiên bản mới cũng cho phép / vô hiệu hóa block cache..
cyberp 27/05/2015

tuyệt vời. Điều gì ngăn bạn xuất bản nó trong drupal.org?
Capi Etheriel

Thời gian! Tôi không biết làm thế nào để làm điều đó :)
cyberp

1

Ngoài ra, bạn có thể vô hiệu hóa bộ đệm theo dòng dưới đây, đặt nó trong settings.phptập tin

$conf['display_cache_disable'] = TRUE;
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.