>백엔드 개발 >PHP 튜토리얼 >PHP8.0의 HTTP 캐싱 라이브러리: PSR-7

PHP8.0의 HTTP 캐싱 라이브러리: PSR-7

王林
王林원래의
2023-05-14 08:48:201186검색

웹 애플리케이션이 점점 더 오래 실행됨에 따라 서버 성능과 데이터 전송 속도가 점점 더 큰 문제가 됩니다. HTTP 캐싱은 이 문제를 처리하는 방법으로 클라이언트 측에서 일반적으로 사용되는 리소스를 캐싱하면 애플리케이션이 요청에 더 빠르게 응답하고 서버의 로드를 줄일 수 있습니다. 웹 개발 언어인 PHP 8.0에는 PSR-7이라는 HTTP 캐싱 처리를 위한 자체 솔루션도 있습니다.

PSR-7은 HTTP 메시지용으로 설계된 PHP 표준으로, HTTP 요청 및 응답 메시지 생성 및 처리를 위한 통합 인터페이스를 제공합니다. 이는 HTTP 메시지의 기본 구성 요소(예: HTTP 헤더, 요청 URI, HTTP 메서드, HTTP 본문)와 이를 구성, 직렬화 및 구문 분석하는 방법을 정의합니다.

HTTP 캐싱의 경우 PSR-7의 중요한 역할은 캐싱 제어의 표준인 HTTP 메시지 헤더를 표준화하는 것입니다. 사용자 에이전트는 Cache-Control과 같은 헤더 정보를 사용하여 캐싱 동작을 제어할 수 있으므로 효율적인 HTTP 캐싱을 달성하려면 PSR-7을 사용하는 것이 중요합니다.

다음은 PSR-7이 제공할 수 있는 몇 가지 HTTP 캐싱 솔루션입니다.

1. ETag 캐시

ETag 캐시는 엔터티 태그 캐시입니다. 클라이언트가 리소스를 요청하면 ETag가 응답 헤더에 추가되며, 이 헤더는 클라이언트에 의해 저장되었다가 다음에 동일한 리소스가 요청될 때 서버로 다시 전송됩니다. 서버는 클라이언트의 ETag가 서버 측 리소스와 동일한지 확인합니다. 그렇다면 서버는 304 Not Modified 응답 코드가 포함된 응답 헤더를 반환하고 클라이언트 캐시에서 리소스를 추출하여 리소스의 반복 전송을 방지하고 서버의 부하를 줄입니다.

ETag 캐싱은 PSR-7을 사용하여 쉽게 구현할 수 있습니다. 응답 메시지에 ETag 헤더를 추가하면 다음 요청을 위해 ETag를 클라이언트에 쉽게 다시 보낼 수 있습니다. 서버는 비교를 위해 ETag 값을 사용합니다. 값이 동일하면 더 이상 리소스를 보내지 않고 대신 304 Not Modified 응답을 보냅니다. 예는 다음과 같습니다.

$response = new Response();
$response = $response

->withHeader('ETag', 'MyETagValue');
  1. Last-Modified 캐시

Last-Modified 캐시는 엔터티 태그 캐시입니다. 서버는 응답 메시지 헤더에 Last-Modified 헤더를 추가합니다. 이 헤더의 값은 요청된 리소스의 마지막 수정 시간입니다. 클라이언트가 다음에 동일한 리소스를 요청할 때 날짜 및 시간 형식의 Last-Modified 헤더 정보를 서버에 다시 보냅니다. 서버는 이 헤더 정보가 리소스의 마지막 수정 시간인지 확인합니다. 그렇다면 서버는 304 Not Modified 응답 코드가 포함된 응답 헤더를 반환하고 클라이언트 캐시에서 리소스를 가져와 서버의 부하를 줄입니다.

psr-7을 사용하면 Last-Modified 캐싱을 쉽게 구현할 수도 있습니다. 코드 예:

$response = new Response();
$response = $response

->withHeader('Last-Modified', 'LastModifiedDate');
  1. Cache-Control 캐시 전략

Cache-Control 캐시 전략은 캐싱 제어 방법에 대한 응답 메시지 헤더에 설정된 방법입니다. . 클라이언트의 요청을 줄여 서버의 부하를 줄입니다. Cache-Control 헤더 정보에는 다음과 같은 유형이 있습니다.

  • max-age: 캐시의 최대 시간입니다.
  • no-cache: 캐시할 수 있지만 사용할 때마다 유효한 확인이 필요합니다.
  • no-store: 캐시되어서는 안 됩니다.
  • private/public: 캐시는 개인 클라이언트 전용이며 공유 가능합니다.
  • 재검증 필수: 만료 후 재검증이 필요합니다.
  • stale-while-revalidate: 캐시 시간이 만료된 후 새 데이터를 가져오는 동안 이전 데이터가 반환됩니다.
  • stale-if-error: 네트워크 이상이 발생한 경우 캐시가 있으면 캐시도 반환됩니다.

다음은 PSR-7을 통해 Cache-Control 캐시 전략을 구현한 예입니다. 응답 헤더에 필요한 정보를 추가하기만 하면 됩니다.

$response = new Response();
$response = $response

->withHeader('Cache-Control', 'max-age=3600');

Summary

PSR-7은 HTTP 요청 및 응답 메시지를 생성하고 처리하기 위한 표준화된 솔루션을 제공합니다. 효율적인 HTTP 캐싱을 위해서는 필수적입니다. PSR-7을 사용하면 ETag 캐싱, Last-Modified 캐싱 및 Cache-Control 캐싱 전략을 쉽게 구현할 수 있습니다. PHP 8.0을 사용하여 웹 애플리케이션을 구축 중이고 효율적인 HTTP 캐싱을 구현해야 하는 경우 PSR-7을 사용해 보세요.

위 내용은 PHP8.0의 HTTP 캐싱 라이브러리: PSR-7의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.