본문 바로가기
프로그래머 하루3시간

간단하고 효율적인 PHP 캐시를 만드는 방법 (프로그래밍 독학)

by Money Grow 2020. 1. 16.

처음부터 프레임 워크없이 작성된 PHP 웹 사이트에서 작업할 때 속도가 종종 문제가 될 수 있습니다. 캐싱은 PHP 웹 페이지 속도를 높이는데 매우 유용합니다.

이 기사에서는 웹 페이지에 간단한 PHP 캐싱 시스템을 만드는 방법을 보여 드리겠습니다.

페이지 캐싱이란 무엇입니까?
페이지 캐싱은 원본 데이터가 패치 또는 계산 비용이 높을때(일반적으로 액세스 시간 측면에서) 중복 데이터 콜렉션을 작성하는 기술입니다.

PHP는 해석된 프로그래밍 언어이므로 서버는 PHP 페이지가 요청될 때마다 코드를 실행해야 합니다. 스크립트의 복잡성과 길이에 따라 이 작업에는 시간이 걸리고 많은 리소스가 필요할 수 있습니다. 웹 사이트에 트래픽이 많으면 서버와 사이트 속도가 느려질 수 있습니다.

웹 페이지가 캐시되면 스크립트는 관련 캐시 파일이 존재하는지 확인합니다. 그렇다면 고정 된 캐시 파일이 방문자의 브라우저로 전송됩니다. 그렇지 않으면 방문자가 처음 요청할 때 동적 페이지의 정적 버전이 자동으로 작성됩니다.

정적 페이지의 동적 페이지를 작성하면 캐싱 시스템은 페이지가 요청 될 때마다 실행되는 대신 PHP 스크립트가 한 번만 실행되므로 많은 서버 자원을 절약합니다.

캐시 파일은 개발자가 설정 한 특정 수명을 갖습니다. 정의 된 수명이 초과되면 서버는 PHP 스크립트를 실행 한 다음 새로운 캐시 버전을 생성합니다.

1 단계 : top-cache.php 파일 생성
두 개의 파일을 만들어야합니다. 첫 번째 파일은 다음과 같습니다. top-cache.php라는 새 파일을 만들고 아래 코드를 붙여 넣습니다.

 

<?php $url = $_SERVER["SCRIPT_NAME"];

$break = Explode('/', $url);

$file = $break[count($break) - 1];

$cachefile = 'cached-'.substr_replace($file ,"",-4).'.html';

$cachetime = 18000;

// Serve from the cache if it is younger than $cachetime

if (file_exists($cachefile) && time() - $cachetime < filemtime($cachefile)) { echo "<!-- Cached copy, generated ".date('H:i', filemtime($cachefile))." -->\n"; readfile($cachefile);

exit;

}

ob_start(); // Start the output buffer

?>

 

그렇다면 이 코드는 무엇입니까? 처음 5줄은 현재 PHP 파일에 따라 캐시된 파일 이름을 만듭니다. 따라서 list.php라는 파일을 사용하는 경우 페이지 캐싱으로 생성된 웹 페이지의 이름은 cached-list.html 이 됩니다.


6행은 간단한 캐시의 수명 (Cachefile 시간)을 결정하는 $ cachetime 변수를 만듭니다.

9-13 행은 $ cachefile이라는 캐시 파일을 찾는 조건문입니다. 파일을 찾으면 주석이 삽입되고 (10 행) $ cachefile 파일이 포함됩니다. 그런 다음 exit 문은 스크립트 실행을 중지하고 파일이 클라이언트 브라우저로 전송됩니다. 정적 파일이 발견되면 서버가 PHP를 해석하지 않는다는 의미입니다.

14 행은 $ cachefile 파일이 없으면 버퍼를 만듭니다. 이것이 top-cache.php 파일의 전부입니다.

2 단계 : bottom-cache.php 파일 생성
이제 bottom-cache.php라는 다른 새 PHP 파일을 만들고 아래 코드를 붙여 넣습니다.

 

<?php

// Cache the contents to a cache file

$cached = fopen($cachefile, 'w');

fwrite($cached, ob_get_contents());

fclose($cached);

ob_end_flush(); // Send the output to the browser

?>

 

서버에서 $ cachefile이라는 캐시된 파일을 찾지 못하면 이 코드가 실행되어 캐시 파일 자체를 만듭니다.

결과적으로 다음에 페이지가 요청될때 $ cachefile 정적 파일은 전체 PHP 파일을 실행하는 대신 클라이언트 브라우저에 제공됩니다.

3 단계 : 페이지에 캐시 파일 포함
두 개의 필요한 파일을 만들었으므로 캐시하려는 PHP 페이지에 파일을 포함시키기만하면 됩니다.

짐작 하시겠지만, top-cache.php 파일은 아래와 같이 PHP 페이지의 시작 부분에, bottom-cache.php 파일이 포함되어야합니다 :

 

<?php

include('top-cache.php');

// Your regular PHP code goes here

include('bottom-cache.php');

?>

 

이제 느린 페이지에서 캐시를 테스트하면 페이지 속도가 놀랍습니다. 이 간단한 PHP 캐싱 시스템은 PHP 웹 사이트를 처음부터 작업할 때 가장 좋아하는 솔루션입니다.

 


자주 묻는 질문

OpCode Cache란 무엇입니까?
OpCode 캐시는 PHP 코드 컴파일 결과를 바이트 코드로 캐시하는 성능 향상 확장입니다. PHP의 수명 기간 동안 대부분의 사용된 PHP 버전에 따라 사용 가능한 OpCode 캐시가 많이 있었습니다.

OpCode Cache를 어떻게 활성화 합니까?
사용 가능한 OpCode 캐시는 서버에서 사용되는 PHP 버전에 따라 다르므로 웹호스팅 제공 업체에 문의하여 사이트에서 OpCode 캐싱을 활성화하는 방법을 확인하십시오.

 

 

기고: Jean-Baptiste Jung

출처: https://catswhocode.com/phpcache/

 

 

댓글