RESTFUL API는 HTTP 프로토콜 구현을 기반으로 한 인터페이스 스타일입니다. 리소스의 식별자와 리소스 상태를 분리하여 클라이언트와 서버 간의 상호 작용을 더 쉽게 만듭니다. RESTFUL API를 사용하는 과정에서 캐시는 성능 최적화에 중요한 역할을합니다. 캐시 제어는 서버에서 HTTP 헤더를 설정하여 클라이언트에게 캐시 및 캐시 사용 방법을 알려줍니다.
HTTP 헤더는 HTTP 요청 및 응답의 일부이며 응답 컨텐츠, 캐시 제어, 인증 등에 대한 정보가 포함되어 있습니다. 편안한 API 캐시 제어에서 일반적으로 사용되는 HTTP 헤더는 다음과 같습니다.
캐시 제어는 클라이언트 요청, 프록시 서버 캐시 및 서버 응답의 캐시 동작을 제어하기 위해 HTTP/1.1에 추가 된 새로운 명령어입니다. 공통 값은 다음과 같습니다.
ETAG는 현재 리소스의 상태를 식별하는 HTTP 응답 헤더의 엔티티 태그입니다. 요청시, 클라이언트는 이전에 얻은 ETAG 값을 if-none-match 헤더를 통해 서버로 보냅니다. 서버는 ETAG 값이 일관된 지 비교합니다. 일관된 경우 304 수정되지 않은 응답을 반환합니다. 클라이언트는 캐시를 직접 사용할 수 있습니다.
마지막으로 수정 된 것은 현재 리소스의 마지막 수정 시간을 식별하는 HTTP 응답 헤더의 날짜 시간 값입니다. 요청시, 클라이언트는 이전에 얻은 날짜 및 시간 값을 if-modified-since 헤더를 통해 서버로 보냅니다. 서버는 날짜와 시간이 일관된 지 비교합니다. 일관된 경우 304 수정되지 않은 응답을 반환합니다. 클라이언트는 캐시를 직접 사용할 수 있습니다.
HTTP 헤더 정보를 설정하여 PHP에서 RESTFUL API 캐시 제어를 구현할 수 있습니다.
서버의 헤더 기능을 통해 캐시 제어 헤더를 설정할 수 있습니다. 코드는 다음과 같습니다.
$maxAge = 600; // 은닉처600두번째
header('Cache-Control: public, max-age=' . $maxAge);
위의 코드는 캐시 제어 헤더를 공개로 설정하여 모든 중개인 (예 : 프록시 서버)이 응답을 캐시 할 수 있고 최대 캐시 시간은 600 초입니다.
서버의 헤더 기능을 통해 ETAG 헤더를 설정할 수 있습니다. 코드는 다음과 같습니다.
$etag = md5($responseBody); // 응답 내용에 따라 엔터티 태그를 생성합니다
header('ETag: ' . $etag);
위의 코드는 응답 내용을 기반으로 ETAG 태그를 생성하고 응답 헤더의 일부로 설정합니다.
마지막으로 변형 된 헤더는 서버의 헤더 기능을 통해 설정할 수 있으며 코드는 다음과 같습니다.
$lastModifiedTime = filemtime($filePath); // 파일의 마지막 수정 시간을 가져옵니다
$lastModified = gmtdate('r', $lastModifiedTime);
header('Last-Modified: ' . $lastModified);
위의 코드는 파일의 마지막 수정 시간을 가져 와서 GMT 형식으로 변환 한 다음 응답 헤더의 일부로 설정합니다.
RESTFUL API의 캐시 제어는 응용 프로그램 성능을 크게 향상시키고 서버 리소스에 대한 요청 및 응답을 줄일 수 있습니다. RESTFUL API의 캐시 제어를 구현할 때 HTTP 헤더를 설정하여 클라이언트에게 캐시 및 캐시 사용 방법을 알릴 수 있습니다. HTTP 헤더에는 캐시 제어, ETAG 및 최종 수정과 같은 중요한 정보가 포함되어 있습니다. 클라이언트는이 정보를 사용하여 캐시 응답을 직접 사용할 수 있는지 확인할 수 있습니다.