모든 캐시를 비활성화하는 drush 스크립트가 있습니까?


19

admin / settings / performance에서 모든 캐싱 옵션을 의미합니다. Drush sql-sync를 자주 사용하여 개발 복사본을 서버에 최신 상태로 유지합니다. 그러나 서버에는 모든 캐시가 켜져 있어야합니다.

그래서 궁금합니다 : DB를 업데이트 할 때마다 관리자 / 설정 / 성능을 방문해야합니까? 아니면 Drush 스크립트가 있습니까?


1
간단한 설명 : chx 답변은 'drush en cache_disable --yes'이기 때문에 가장 좋습니다. GApple은 문제를 한 번에 해결하지만 초보자에게는 상처를 줄 수 있기 때문에 매우 가깝습니다. doublejoice는 실제로 drush 스크립트를 제안하고 내 질문에 대한 훌륭한 답변이지만 다른 두 가지가 더 좋습니다.
Capi Etheriel

답변:



17

개발자 사이트에서 캐싱을 끄려면 여러 변수를 설정해야합니다 ...

 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' );
doublejosh

더 많은 권장 사항 ...$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_jspreprocess_css모든'0'

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

배열 선언의 닫는 괄호는 기본 파일의 마지막 행이며 주석 블록이 몇 개 더 추가 된 것이므로 새 주석을 추가하는 대신 주석 처리를 제거하십시오. 또한 $conf충돌 할 다른 선언이 없는지 확인하십시오 .


2

항상 dev 서버에서 drush aliases 파일을 사용하고 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 개만 나열했지만 거기에 아무것도 넣을 수 없으며 워치 독도 추가합니다).

별명 및 모든 다양한 옵션에 대한 자세한 정보는 drush / examples / example.aliases.drushrc.php의 drush 설치에서 예제 파일을 확인하십시오.

sql-sync를 사용하려고하는 사람에게는 마지막 메모로 처음 실행할 때 인증 문제가 발생했기 때문에 누군가 시도하면 공개 / 개인 키에 대한 오류가 발생하면 다음을 수행하십시오.

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

drush_extras의 pushkey 명령은 개인 / 공개 키 쌍을 생성하고 공개 키를 라이브 서버로 푸시합니다. 마지막 명령은 작동하는지 확인하는 것입니다.


고마워, 대답은 훌륭합니다. 그러나 내 문제는 내 개발 환경에서 캐시를 해제해야하며 업데이트 할 때마다 관리자 / 설정 / 성능 방문을 피하고 싶습니다.
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을 확인하십시오.
cyberp

새 버전도 활성화 / 비활성화 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.