Chrome 메모리 캐시와 디스크 캐시


96

크롬 메모리 캐시와 디스크 캐시에 관심이 있습니까? 나는 webpack, common chunks 플러그인을 사용하고 chunkhash로 모든 파일을 생성합니다.

메모리는 디스크 캐시와 어떻게 다릅니 까? 내 페이지를 다시로드하면 일부 파일은 메모리 캐시에서로드되고 일부는 디스크 캐시에서로드됩니다 (메모리 캐시의 bundle.js 및 image.jpg, 디스크 캐시의 CSS). 때로는 다릅니다. 그것을 제어하고 어디에서로드되는 것을 선택할 수 있습니까? 메모리 캐시가 디스크 캐시보다 빠른 것 같습니다.


1
안녕하세요 Igor, 이로 인해 webpack에로드 문제가 발생 했습니까? 어떻게 해결 했나요?
Rejoy

1
문제가 없었습니다. 이것은 웹팩 번들 파일을 캐시 한 브라우저 캐시 기능입니다.
Igor-Vuk

안녕하세요 Igor, 일부 번들 파일이 디스크에서로드되고 일부는 메모리에서로드 될 때 이것이 문제가되는 것을 확인했습니다. 이 경우 JSONP 오류가 발생합니다. 이것은 드문 경우에만 발생합니다.
Rejoy

답변:


75

그들의 이름이 말했듯이 :

"메모리 캐시"는 메모리 (RAM)에 리소스를 저장하고로드합니다. 따라서 이것은 훨씬 빠르지 만 비 지속적입니다. 브라우저를 닫을 때까지 콘텐츠를 사용할 수 있습니다.

"디스크 캐시"는 영구적입니다. 캐시 된 리소스는 저장되고 디스크에서로드됩니다.

간단한 테스트 : Chrome 개발자 도구 / 네트워크를 엽니 다. 페이지를 여러 번 새로 고침합니다. 테이블 열 "크기"는 일부 파일이 "메모리 캐시에서"로드되었음을 알려줍니다. 이제 브라우저를 닫고 개발자 도구 / 네트워크를 다시 열고 해당 페이지를 다시로드합니다. 메모리 캐시가 비어 있기 때문에 모든 캐시 된 파일은 이제 "디스크 캐시에서"로드됩니다.


4
글쎄요, 그렇게 간단한 줄은 몰랐습니다.
Faizan Anwer Ali Rupani

27
브라우저는 메모리 캐시와 디스크 캐시에 저장할 자산을 어떻게 결정합니까?
chharvey

10
메모리 캐시에 무엇을 캐시해야하는지 구성 할 수 있습니까?
Igor-Vuk

1
로컬에서 실행할 때 디스크에서로드되는 각도 앱에 일부 itens가 있으며 프로덕션에서는 이러한 파일이 전혀 캐시되지 않습니다. 프로덕션 환경에서는 메모리의 캐시 만 작동합니다. 원인이 무엇인지 아십니까?
Rafael Andrade

@RafaelAndrade angular는 (src / environments / *. ts에서) 여러 환경을 제공한다는 것을 명심하십시오. environment.prod.ts는 environment.ts가 로컬 개발 환경을 정의하는 productiv 빌드 환경을 정의합니다. 로컬 개발 환경에서는 대부분 캐시 된 파일을 원하지 않으므로 로컬 변경 사항이 항상 앱에 적용됩니다.
루웬

14

Chrome은 다양한 추상화 수준에서 캐시를 구현합니다. 핵심에는 다른 캐싱 메커니즘을위한 백엔드 인 HTTP (브라우저) 캐시가 있습니다. 일반적으로 캐시는 다음과 같이 나눌 수 있습니다.

  • HTTP 캐시
  • 서비스 워커 캐시
  • 깜박임 캐시

HTTP 캐시

네트워크를 통해 이루어지는 모든 요청은 RFC를 준수하는 HTTP 캐시에 의해 프록시됩니다 . 처음 요청하면 캐시를 덮어 씁니다. 리소스는 원본 URL로 입력됩니다.

서비스 워커 캐시

네트워크 연결 실패를 정상적으로 처리하기 위해 서비스 워커를 사용할 수 있습니다 . 캐시와 캐시 스토리지는 디스크에서 다시 가져옵니다.

깜박임 캐시

Blink는 메모리와 단순 (파일 시스템)의 두 가지 생성 모드에서 Http Cache를 백엔드로 사용합니다. 어느 것이 사용되는지는 캐시가 사용할 수있는 메모리 양에 대해 전역 적으로 설정된 제한에 따라 다릅니다. 또한 현재 렌더러 캐시가 가장 많은 점유율을 얻습니다. 캐시 된 것은 글꼴, 이미지 및 스크립트입니다. 전역 메모리 사용량이 지정된 임계 값에 도달하면 파일 시스템 백엔드가 사용됩니다.

메모리 캐시 강제

기본 메커니즘을 재정의하는 메모리에서 파일을 제공하려면 고유 한 서비스 워커를 구현할 수 있습니다. File Api를 사용하면 리소스를 읽고 메모리의 개체에 저장할 수 있습니다. 그런 다음 fetch 이벤트를 재정의하면이 전역 개체에서 제공되는 콘텐츠와 함께 네트워크 및 파일 읽기가 억제됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.