Laravel Pennant에서 캐시를 플러시하는 것은 일반적인 시스템 캐시 플러싱과 주로 범위, 목적 및 구현 컨텍스트에서 다릅니다.
Laravel 페넌트 캐시 플러싱 :
-Pennant는 해당 요청 내에서 반복 데이터베이스 쿼리를 피하기위한 단일 요청 기간 동안 기능 플래그 결과의 * 메모리 캐시 *를 유지합니다. 이 캐시는 요청 라이프 사이클에 스코핑되며 요청에 따라 지속되지 않습니다.
-Plushing Pennant의 캐시는`feature` facade (`feature :: flushcache ();`)의 'FlushCache'메소드를 통해 수동으로 수행됩니다. 이렇게하면 현재 요청에 대한 기능 플래그의 메모리 캐시가 지워져 후속 기능 검사가 데이터 소스 또는 재 장전 기능을 재구성 할 수 있습니다.
-이 플러싱은 특히 Pennant가 단일 요청 내에서 기능 플래그 검사를 최적화하기 위해 사용하는 메모리 내 캐시를 지우는 것입니다. 해당 요청 중 일관성과 성능을 보장합니다.
-Pennant는 또한 캐싱 전략을 보완하지만 플러싱과 별개의 데이터베이스 쿼리를 줄이기 위해 수집 또는 스코프에 대한 기능 플래그의 열렬한로드를 지원합니다 [1].
일반적인 시스템 캐시 플러싱 (예 : 하드웨어 또는 응용 프로그램 캐시) :
- 스토리지 컨트롤러 또는 일반 목적 캐시와 같은 시스템에서 Flushing은 캐시 된 데이터를 지속적인 매장 (예 : 디스크)에 다시 작성하여 데이터 무결성을 보장하는 것을 나타냅니다. 여기에는 "더러운"캐시 라인 또는 데이터 블록을 기본 스토리지로 플러시하는 것이 포함됩니다.
-이 시스템의 캐시 플러싱은 종종 자동화되며 수요 기반 (캐시 사용이 임계 값에 도달 할 때 트리거) 또는 연령 기반 (시간 이후 트리거)과 같은 알고리즘에 의해 지배되며 성능 및 데이터 안전 균형을 잡기위한 것입니다.
- 여기에서 플러싱은 휘발성 캐시 메모리에서보다 영구적 인 위치로 데이터를 푸시하는 것을 의미하며 반드시 캐시 컨텐츠를 즉시 지우는 것은 아닙니다. 캐시는 유효하며 여전히 적중을 제공 할 수 있습니다.
-이 프로세스는 캐시와 메인 메모리/스토리지 사이의 일관성을 유지하는 데 중요하며 종종 사용자 또는 응용 프로그램에 투명합니다 [5] [7] [10].
주요 차이점 :
-범위 및 목적 : Pennant의 캐시 플러싱은 주로 응용 프로그램 논리 흐름 및 성능을 제어하기 위해 단일 웹 요청의 컨텍스트 내에서 기능 플래그의 단기간 메모리 캐시를 지우는 것입니다. 대조적으로, 시스템 캐시 플러싱은 휘발성 캐시와 영구 스토리지 사이의 데이터 지속성과 무결성을 보장하는 것을 처리합니다.
- 수동 대 자동 : 페넌트는 캐시를 플러시하기 위해 명시적인 호출이 필요하며 시스템 캐시는 종종 임계 값이나 타이머를 기반으로 자동으로 플러시됩니다.
- 캐시에 대한 영향 : Pennant의 Flush는 현재 요청에 대한 캐시를 전적으로 제거하여 새로운 데이터 검색을 강요합니다. 시스템 캐시 플러싱은 다시 데이터를 기록하지만 반드시 캐시를 즉시 무효화하거나 지우는 것은 아닙니다.
- 컨텍스트 : Pennant는 기능 플래그 평가 효율에 중점을 둔 애플리케이션 계층 (PHP 프레임 워크)에서 작동합니다. 시스템 캐시 플러싱은 하드웨어 또는 OS 수준에서 작동하며 I/O 운영의 데이터 무결성 및 성능 최적화에 중점을 둡니다.
요약하면, Laravel Pennant에서 캐시를 플러시하는 것은 단일 요청 내에서 기능 플래그 검사에 사용되는 메모리 인 메모리 캐시를 지우는 매뉴얼, 애플리케이션 수준 작업입니다. 반면, 다른 시스템의 캐시 플러싱은 일반적으로 캐시 된 데이터를 지속적으로 스토리지로 다시 작성하여 데이터 무결성 및 시스템 성능을 유지하는 자동화 된 프로세스를 나타냅니다 [1] [5] [7] [10].
인용 :
[1] https://laravel.com/docs/11.x/pennant
[2] https://stackoverflow.com/questions/77078816/how-to-disable-caching-for-laravel-in-in-db
[3] https://github.com/laravel/pennant/issues/68
[4] https://laracasts.com/episodes/2685
[5] https://docs.netapp.com/us-en/e-series-santricity-115/sm-settings/what-is-cache-flushing.html
[6] https://www.krakend.io/docs/backends/caching/
[7] https://pubs.lenovo.com/thinksystem_system_manager_11.50.3/0D7AE5A7-70B3-4F5B-851D-1B87A3AED0B2_
[8] https://laravel.com/docs/11.x/cache
[9] https://www.linkedin.com/pulse/demystifying-memory-sub-systems-part1-caches-simon-southwell
[10] https://docs.netapp.com/us-en/e-series-santricity/sm-settings/what-is-cache-flushing.html