현재 위치: > 최신 기사 목록> PHP는 편안한 API 캐시 제어를 구현합니다 : 성능 향상을위한 모범 사례

PHP는 편안한 API 캐시 제어를 구현합니다 : 성능 향상을위한 모범 사례

gitbox 2025-07-30

RESTFUL API의 캐시 제어는 무엇입니까?

RESTFUL API는 HTTP 프로토콜 구현을 기반으로 한 인터페이스 스타일입니다. 리소스의 식별자와 리소스 상태를 분리하여 클라이언트와 서버 간의 상호 작용을 더 쉽게 만듭니다. RESTFUL API를 사용하는 과정에서 캐시는 성능 최적화에 중요한 역할을합니다. 캐시 제어는 서버에서 HTTP 헤더를 설정하여 클라이언트에게 캐시 및 캐시 사용 방법을 알려줍니다.

RESTFUL API 캐시 제어 HTTP 헤더

HTTP 헤더는 HTTP 요청 및 응답의 일부이며 응답 컨텐츠, 캐시 제어, 인증 등에 대한 정보가 포함되어 있습니다. 편안한 API 캐시 제어에서 일반적으로 사용되는 HTTP 헤더는 다음과 같습니다.

캐시 제어

캐시 제어는 클라이언트 요청, 프록시 서버 캐시 및 서버 응답의 캐시 동작을 제어하기 위해 HTTP/1.1에 추가 된 새로운 명령어입니다. 공통 값은 다음과 같습니다.

  • 공개 : 모든 중개인 (예 : 프록시 서버)이 응답을 캐시 할 수 있습니다.
  • 비공개 : 응답은 단일 사용자 (예 : 브라우저 캐시)에 의해서만 캐시 될 수 있습니다.
  • 없음 캐시 : 클라이언트와 모든 캐시가 먼저 서버에 대한 캐시의 유효성을 확인해야하며 캐시를 직접 사용할 수 없음을 의미합니다.
  • 없음 스토어 : 응답을 캐시 할 수 없음을 의미합니다.
  • S-Maxage : 프록시 서버는 생존 시간을 캐시하며 최대 연령보다 우선 순위가 높습니다.
  • MAX-AGE : 캐시가있는 응답의 시간 (초) 은이 시간 이후 만료 된 것으로 간주됩니다.

에타그

ETAG는 현재 리소스의 상태를 식별하는 HTTP 응답 헤더의 엔티티 태그입니다. 요청시, 클라이언트는 이전에 얻은 ETAG 값을 if-none-match 헤더를 통해 서버로 보냅니다. 서버는 ETAG 값이 일관된 지 비교합니다. 일관된 경우 304 수정되지 않은 응답을 반환합니다. 클라이언트는 캐시를 직접 사용할 수 있습니다.

마지막으로 수정되었습니다

마지막으로 수정 된 것은 현재 리소스의 마지막 수정 시간을 식별하는 HTTP 응답 헤더의 날짜 시간 값입니다. 요청시, 클라이언트는 이전에 얻은 날짜 및 시간 값을 if-modified-since 헤더를 통해 서버로 보냅니다. 서버는 날짜와 시간이 일관된 지 비교합니다. 일관된 경우 304 수정되지 않은 응답을 반환합니다. 클라이언트는 캐시를 직접 사용할 수 있습니다.

PHP에서 RESTFUL API의 캐시 제어 구현

HTTP 헤더 정보를 설정하여 PHP에서 RESTFUL API 캐시 제어를 구현할 수 있습니다.

캐시 제어 헤더 설정

서버의 헤더 기능을 통해 캐시 제어 헤더를 설정할 수 있습니다. 코드는 다음과 같습니다.

 
$maxAge = 600; // 은닉처600두번째
header('Cache-Control: public, max-age=' . $maxAge);

위의 코드는 캐시 제어 헤더를 공개로 설정하여 모든 중개인 (예 : 프록시 서버)이 응답을 캐시 할 수 있고 최대 캐시 시간은 600 초입니다.

Etag 헤더 설정

서버의 헤더 기능을 통해 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 및 최종 수정과 같은 중요한 정보가 포함되어 있습니다. 클라이언트는이 정보를 사용하여 캐시 응답을 직접 사용할 수 있는지 확인할 수 있습니다.