2017-12-13 26 views
0

이전에는 etag으로 일한 적이 없으며 config JSON을 가져 오는 것과 관련된 호출을 구현하려고합니다. 예비 응답에서 캐시 제어를 1 시간으로 설정하고 로컬 저장소에 저장하는 etag도 수신합니다. 이후의 요청에서 localstorage에서 검색 한 etag 값과 함께 If-None-Match 헤더를 추가합니다. 예상대로 304를 받았는데 요청 처리기가 오류로 처리합니다. 304가 브라우저에 자동으로 처리되고 이전 요청에서 캐시 된 버전을 가져 오는 것으로 가정했습니다. 그렇지 않은 경우 올바르게 캐시 된 값을 가져 오기 위해 304를 올바르게 처리해야합니까?ETag 유효성 검사에서 304를 반환하면 브라우저가 자동으로 캐시에서 패치를 가져 옵니까?

답변

1

304은 오류 응답이 아니며 유효한 응답입니다.

코드에서 오류로 처리하는 경우 유효한 응답으로 받아들이고 이미 저장되어있는 캐시 값을 사용하도록 코드를 업데이트해야합니다. 일반적으로 이것은 캐시 요청이 처리되는 브라우저 수준에서 숨겨져 있습니다. 캐시가 신선한 경우 캐시 값을 제공하고 부실 한 경우 응답 (일반적으로) 200에서 반환 된 값을 제공합니다.

사용자가 수동으로 (즉 Javascript/XHR 사용) 및 수동 헤더를 채우는 전화를 걸 경우, 당신의 시작이이 헤더를 수정하고 ETags를 사용하는 경우 자신의 캐시를 관리하는 영역으로 얻을 수 있습니다.

수동으로 헤더를 변경하지 않고 브라우저에서 캐시 처리를 사용하는 경우 자바 스크립트 라이브러리가이를 처리하도록 설정되어 있는지 확인하십시오 (예 : jQuery를 사용하여 cache 값이 true인지 확인).

언어/클라이언트 측 설정/라이브러리에 대한 몇 가지 추가 정보가 유용 할 것입니다.

+0

나는 노드와 함께 일하고 있으며, 노드는 응답을 생성 할 때 자동으로 etags를 설정한다. clientside에 대한 요청은 axios라는 패키지를 사용하여 처리됩니다. If-None-Match를 수동으로 설정해야만 더 좋은 방법으로 처리 할 수 ​​있습니다. – ramesh