Laravel에서 배치할 때마다 고속 캐시를 건너뛰어야 합니다. 이것은cache:clear에서는 안 됩니다.

3603 단어 LaravelCache
안 된다고 쓰여 있지만 서버 한 대라면 문제가 없어요.
또한 Blue-Green Deploy에서도 크게 신경 쓸 필요가 없습니다.
이번에 스크롤 업데이트에 배치할 때php artisan cache:clear는 안 되기 때문에 회피 방법을 소개해 드리겠습니다.

스크롤 업데이트로 사망



이번에는 두 대의 서버가 있는데 각각 스크롤 업데이트를 통해 배치된다.
첫 번째 배포 시 php artisan cache:clear 캐시가 종료되었습니다.
이 때, 요청은 아직 발표되지 않은 두 번째 응용 프로그램으로 흘러갔습니다. 이 캐시를 만들었기 때문에, 첫 번째 응용 프로그램이 캐시에서 가져온 데이터가 논리적 변경으로 인해 오류가 발생했습니다.
그럼 어떡하지?

다른 캐시 키 참조


첫 번째 캐시와 두 번째 캐시 키가 다르면 첫 번째 캐시를 가져올 수 없기 때문에 처리 캐시를 다시 생성합니다.또한 캐시를 지울 필요가 없습니다.
배치할 때마다 이 층의 캐시 키를 생성해서 문제를 해결합니다.
Laravel의 config/cache.php 중 prefix라는 프로젝트가 있는데 CACHE_PREFIX의 환경 변수로 변경할 수 있습니다.
cache.php
'prefix' => env(
    'CACHE_PREFIX',
    str_slug(env('APP_NAME', 'laravel'), '_') . '_cache'
),
※CACHE_PRIFIX는 캐시file 또는 array를 지정할 때 사용하지 않습니다.

배치할 때마다 고유한 캐시 키 생성


이번에는 CircleCI의 예입니다.
echo -n "CACHE_PREFIX=" > .env | echo $CIRCLE_SHA1 | cut -c -10 >> .env
CircleCI$CIRCLE_SHA1에서 최종 커밋된 산열을 얻을 수 있습니다.이걸로 시작해서 10명.env로 내보냅니다.
이렇게 하면 배치할 때마다 캐시 키를 새로 고칩니다.
같은 어려운 사람이 있으면 참고하세요.

보충하여 기록하다


DB의 캐시와 세션 캐시가 모두 사라져서 곤란합니다!이런 사람은 아래의 방법을 고려해 주십시오.
우선memcached의 설정을 DB와 세션으로 분리합니다.
config/cache.php
'db_memcached' => [
  // 内容はmemcached項目を参照
],
'session_memcached' => [
  // 内容はmemcached項目を参照
],
그런 다음 .env 의 DB에 대한 캐시 드라이버 및 세션 스토리지 지정 변경
.env
CACHE_DRIVER=db_memcached
SESSION_STORE=session_memcached
이제 데이터베이스 캐시와 세션 캐시를 분리할 수 있습니다.
그리고 db_memcached만prefix를 제공합니다.
config/cache.php
'db_memcached' => [
  // 内容はmemcached項目を参照
  'options' => [
    Memcached::OPT_PREFIX_KEY => env('DB_CACHE_PREFIX', '')
  ]
],
그리고 이전 배포 프로세스와 마찬가지로 DB_CACHE_PREIX를 생성하여 각 배포는 DB 캐시만 업데이트합니다.
기쁘고 축하할 만하다.

좋은 웹페이지 즐겨찾기