최신 웹 애플리케이션을 개발할 때 성능과 응답 성이 중요합니다. 특히 웹 사이트 방문이 점점 커질 때 웹 사이트의 성능을 최적화하고 서버의 부담을 줄이는 방법은 개발자가 해결해야 할 문제가되었습니다. 캐싱은 성능을 향상시키는 효과적인 방법 중 하나이며, PHP는 메모리의 데이터를 캐시 할 수있는 APCU (대체 PHP 캐시) 확장을 제공하여 웹 사이트의 응답 속도를 크게 향상시킵니다.
APCU 확장자를 사용하면 매번 데이터베이스 나 파일 시스템에서 읽지 않고도 공유 메모리에 데이터를 저장하여 메모리에서 데이터를 빠르게 검색 할 수 있습니다. 이것은 데이터베이스의 부담을 줄일뿐만 아니라 서버의 응답 시간을 줄입니다.
APCU는 PHP의 캐시 확장입니다. 후속 요청에 액세스하기 위해 메모리에 데이터를 저장하는 것을 지원하는 효율적인 캐싱 메커니즘을 제공합니다. APCU는 기존 캐시 시스템에 비해 대기 시간이 낮고 성능이 높아집니다. 주요 장점은 페이지 컨텐츠 또는 쿼리 결과를 캐시하여 요청 당 계산량을 줄일 수 있다는 것입니다.
APCU_ENTRY () 는 APCU 확장에서 매우 실용적인 기능입니다. 데이터 항목을 캐시에 저장하는 데 사용되며 캐시 항목이 만료되기 전에 반복적으로 저장되지 않도록합니다. 이를 통해 캐시는 반복 컴퓨팅 프로세스를 피할 수 있도록하여 시스템의 효율성을 향상시킬 수 있습니다.
apcu_entry () 함수의 기본 구문은 다음과 같습니다.
mixed apcu_entry ( string $key , callable $callback [, int $ttl = 0 ] )
$ 키 : 배열의 인덱스와 유사한 캐시 된 키는 캐시의 데이터를 고유하게 식별합니다.
$ 콜백 : 캐시에 해당 키가 없을 때 캐시 된 데이터를 생성하기 위해 실행되는 콜백 기능.
$ ttl : 캐시 된 생존 시간은 몇 초 만에 캐시 후 만료되는 시간을 나타냅니다. 기본값은 0이므로 결코 만료되지 않습니다.
성공하면 캐시 된 데이터를 반환하십시오.
캐시 생성이 실패하면 False가 반환됩니다.
apcu_entry () 를 통해 동적으로 생성 된 페이지 컨텐츠 또는 쿼리 결과를 캐시 할 수 있습니다. 다음에 같은 페이지에 액세스하면 재 계산을 피하기 위해 캐시에서 직접 얻을 수 있으므로 페이지로드 속도가 향상됩니다.
많은 방문이있는 웹 페이지가 있고 데이터베이스에서 동적으로 생성 된 콘텐츠를 가져와야한다고 가정합니다. 데이터베이스에서 데이터를 얻는 데는 페이지가로드 될 때마다 많은 시간과 리소스가 필요합니다. 성능을 향상시키기 위해 APCU_ENTRY ()를 사용하여 데이터베이스 쿼리의 결과를 캐시 할 수 있습니다.
<?php
// 캐시가 있는지 확인하십시오
$pageCache = apcu_entry('home_page_cache', function () {
// 데이터베이스에서 데이터 얻기를 시뮬레이션합니다
$data = file_get_contents("https://gitbox.net/data/content.txt"); // 이것이 캐시해야 할 데이터라고 가정합니다.
return $data;
}, 3600); // 은닉처1시간
echo $pageCache;
?>
캐시에서 apcu_entry () 함수를 통해 home_page_cache 키에 해당하는 데이터를 얻으려고 노력합니다.
캐시에 데이터가 없으면 콜백 함수가 실행되어 원격 서버 (예 : https://gitbox.net/data/content.txt )의 데이터로드를 가장합니다.
검색된 데이터는 3600 초 (즉, 1 시간)로 캐시 되며이 기간 동안의 모든 액세스는 캐시에서 직접 데이터를 읽습니다.
캐시가 만료되지 않은 경우 다음 액세스는 데이터를 다시로드 할 필요가 없지만 캐시 된 컨텐츠를 직접 반환합니다.
이러한 방식으로 요청할 때마다 서버에서 데이터를 다시 구입하지 않으므로 응답 시간과 서버로드가 크게 줄어 듭니다.
정적 파일 캐싱 : APCU를 사용하여 일부 정적 컨텐츠 (예 : HTML, CSS, JavaScript 파일)를 캐시하면 페이지로드 속도가 더욱 향상 될 수 있습니다. 자주 변하지 않는 컨텐츠의 경우 캐시 효과가 특히 분명합니다.
데이터베이스 쿼리 캐시 : 데이터베이스 쿼리가 느려지는 상황의 경우 APCU_ENTRY ()를 사용하여 요청할 때마다 데이터베이스 작업을 실행하지 않도록 쿼리 결과를 캐시 할 수 있습니다. 데이터베이스 인덱스 최적화와 결합하여 웹 사이트의 성능을 크게 향상시킬 수 있습니다.
페이지 캐싱 : 일부 정적 페이지의 경우 APCU는 전체 페이지의 HTML 컨텐츠를 캐시하는 데 사용됩니다. 페이지 컨텐츠가 자주 변경되지 않으면 캐시를 사용하면 응답 속도가 크게 향상 될 수 있습니다.
적절한 캐시 시간 : 캐시 된 TTL (생존 시간)을 합리적으로 설정하여 캐시가 너무 빨리 만료 된 반복 계산을 피할뿐만 아니라 캐시가 오랫동안 구식을 방지하지 못하게합니다.
APCU Extension에서 apcu_entry () 함수를 사용하면 동적으로 생성 된 컨텐츠를 쉽게 캐시하여 웹 사이트의 응답 속도 및 성능을 향상시킬 수 있습니다. 캐시 된 데이터베이스 쿼리 결과, 페이지 컨텐츠 또는 정적 파일이든 APCU는 서버의로드를 효과적으로 줄이고 사용자 경험을 향상시킬 수있는 매우 강력한 도구입니다. 실제 개발에서, 캐시의 합리적인 사용은 응용 프로그램을 크게 개선 할 수 있습니다.