웹 cache 메커니즘 (cache - control)
2626 단어 JavaScriptWebnginx응용 서버cache
cache 는 캐 시 여야 합 니 다. 캐 시 는 우리 사이트 의 응용 성능 을 향상 시 킬 수 있 습 니 다. 이것 은 의심 할 여지 가 없습니다.그렇다면 HTTP 프로 토 콜 은 어떻게 CACHE 메커니즘 을 지원 합 니까?
우리 함께 탐색 해 보 자.
우선 http 프로 토 콜 헤더 의 원문 w3c cache
이 설명 은 대략 다음 과 같다.
클 라 이언 트 가 http 요청 에 접근 할 때 클 라 이언 트 캐 시가 이 entry 가 있 는 지 확인 하고 있 으 면 사용 가능성 (예 를 들 어 만 료 시간, id 등) 을 확인 하고 유효 하 다 면 클 라 이언 트 에 게 직접 돌아 갑 니 다.cache 에 이 entry 가 없 으 면 서버 에 요청 합 니 다.
HTTP 프로 토 콜 은 어떻게 이 절 차 를 보증 합 니까?
cache - control 이라는 http header 를 볼 수 있 습 니 다. cache - control 은 http / 1.1 의 내용 으로 http / 1.0 의 pragma 를 호 환 합 니 다.
cache - control 에서 자주 사용 하 는 속성 은
max - age 와 no - cache
구체 적 인 표기 법 은 다음 과 같다.
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache" />
상기 코드 의 뜻 은:
첫 번 째 줄: 영원히 만 료 됩 니 다. 요청 할 때마다 서버 와 상호작용 을 해 야 합 니 다. max - age 의 단 위 는 초 입 니 다.
두 번 째 줄: 클 라 이언 트 가 cache 를 하지 않 습 니 다.
PS max - age 의 우선 순 위 는 http 의 expires 헤드 보다 높 은 우선 순위 입 니 다. 즉, max - age 를 설정 하면 expires 헤드 의 만 료 시간 을 덮어 씁 니 다.서버 cache - control 과 expires 가 설정 되 어 있 지 않 으 면 http 프로 토 콜 클 라 이언 트 에 따라 만 료 시간 을 자동 으로 계산 합 니 다.
클 라 이언 트 가 http 요청 을 할 때 클 라 이언 트 가 이 캐 시가 존재 하고 유효 하 다 는 것 을 확인 하면 캐 시 내용 을 직접 되 돌려 줍 니 다.그렇다면 캐 시가 유효한 지 어떻게 판정 합 니까?
검사 규칙 은 매우 많 을 수 있 습 니 다. 기 존 에 흔히 볼 수 있 는 검사 필드 는?
검 사 는 강 한 검사 와 약 한 검사 로 나 뉜 다.
강 한 검사 란 실체 (요청 한 대상) 가 바 뀌 었 을 때 관련 검사 기 도 달라 지 는 것 을 말한다.그렇지 않 으 면 약 한 검사 라 고 합 니 다.
우 리 는 Etag 를 예 로 들 자.
클 라 이언 트 가 요청 을 보 내 면 요청 헤더 에 ETag = 1 필드 가 있 습 니 다. 서버 가 이 요청 을 받 았 을 때 이 ETag 를 1 로 분석 하고 서버 와 로 컬 요청 실체의 ETag 를 비교 합 니 다. 같 으 면 304 로 돌아 갑 니 다. 그렇지 않 으 면 새로운 실체 로 돌아 갑 니 다.
이것 이 바로 전체 검사 과정 이다.
이 원칙 을 알 게 되면 우 리 는 응용 을 할 때 다음 과 같은 두 가 지 를 주의해 야 한다.
그래서 나의 해결 방안 은 다음 과 같다.
<script type="text/javascript" src="a.js?v=1" ></script>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.