>  기사  >  백엔드 개발  >  PHP에서 페이지 정적 캐싱 코드를 구현하는 방법

PHP에서 페이지 정적 캐싱 코드를 구현하는 방법

PHPz
PHPz원래의
2023-04-05 10:30:27503검색

PHP는 동적 웹 페이지를 만들고 양식 데이터를 처리하는 데 사용되는 인기 있는 스크립팅 언어입니다. 많은 경우, PHP 코드는 웹페이지의 동적 콘텐츠를 생성하기 위해 일정한 양의 계산과 데이터 처리를 수행해야 합니다. 이러한 종류의 동적으로 생성된 웹 페이지는 사용자가 동일한 페이지에 액세스할 때 페이지의 데이터를 다시 계산해야 하므로 웹 페이지 로딩 시간이 길어지고 사용자 경험에 영향을 미칩니다. 이 문제를 해결하기 위해 페이지 정적 캐싱 기술을 사용할 수 있습니다.

정적 페이지 캐싱이란 동적으로 생성된 웹 페이지를 캐싱하여 계산 및 데이터 처리 작업을 수행할 필요 없이 다음 방문 시 캐시된 콘텐츠를 직접 반환할 수 있도록 하는 것을 말합니다. 이를 통해 웹 페이지의 응답 속도를 크게 향상시키고 서버 부하 및 네트워크 대역폭 사용량을 줄일 수 있습니다. PHP에서 페이지 정적 캐싱을 구현하는 방법에는 여러 가지가 있습니다. 다음은 간단한 구현 방법 중 하나입니다.

1단계: 캐시가 존재하는지 확인

PHP 코드에서는 파일 수정 시간을 기준으로 파일을 다시 생성해야 하는지 여부를 판단할 수 있습니다. 파일이 이미 존재하고 수정 시간이 특정 시간 범위 내에 있으면 캐시된 콘텐츠를 직접 읽을 수 있으며, 그렇지 않으면 캐시를 다시 생성해야 합니다. 다음은 캐시 존재 여부를 판단하는 코드입니다.

$cache_file = 'cache.html'; // 缓存文件名
$expiry = time() - 60 * 60; // 缓存过期时间,这里设置为1小时前
if (file_exists($cache_file) && filemtime($cache_file) > $expiry) {
    // 直接读取缓存文件内容
    readfile($cache_file);
    exit();
}

위 코드는 먼저 캐시 파일 이름을 캐시.html로 정의한 후, 캐시 만료 시간을 1시간 전으로 설정합니다. 다음으로 file_exists() 함수를 사용하여 캐시 파일이 존재하는지 확인하고, 존재한다면 filemtime() 함수를 통해 파일의 수정 시간을 얻어 해당 시간이 지정된 만료 시간 내에 있는지 비교한다. 조건이 만족되면 캐시 파일의 내용을 직접 읽어 브라우저에 출력하고 프로그램 실행을 종료합니다.

2단계: 캐시 콘텐츠 생성

캐시가 존재하지 않거나 만료된 경우 새 캐시 콘텐츠를 생성해야 합니다. 캐시를 생성하는 과정은 다른 기능을 호출하거나 데이터베이스 쿼리를 수행하거나 동적 웹 페이지의 HTML 코드를 파일로 저장하는 것일 수 있습니다. 다음은 캐시된 콘텐츠를 생성하는 예입니다.

// 生成新的缓存内容
ob_start(); // 开始输出缓冲
// 在这里写你的动态内容生成代码
echo '<h1>Welcome to my website!</h1>';
// 结束输出缓冲,获取缓冲区的内容
$content = ob_get_clean();
// 把缓冲区的内容保存到缓存文件中
file_put_contents($cache_file, $content);
// 输出缓存内容到浏览器并结束程序执行
echo $content;
exit();

위 코드는 PHP의 출력 버퍼링 함수 ob_start() 및 ob_get_clean()을 사용합니다. ob_start() 함수를 호출한 후에는 모든 출력 내용이 메모리에 캐시됩니다. 캐시는 캐시된 데이터를 얻기 위해 ob_get_clean() 함수가 호출될 때까지 지워지지 않습니다. 이런 식으로 ob_start()와 ob_get_clean() 사이에 동적 웹 페이지의 HTML 코드를 작성하고 이를 $content 변수에 저장한 다음 $content 변수에 해당 내용을 캐시 파일로 저장할 수 있습니다. 마지막으로 $content 변수의 내용이 브라우저에 출력되고 프로그램 실행이 종료됩니다. 생성된 캐시된 HTML 코드가 표시됩니다.

3단계: 전체 코드

위는 단순히 페이지 정적 캐싱을 구현한 예입니다. 다음은 전체 코드입니다.

// 缓存文件名
$cache_file = 'cache.html';
// 缓存过期时间,这里设置为1小时前
$expiry = time() - 60 * 60;
// 判断缓存是否存在
if (file_exists($cache_file) && filemtime($cache_file) > $expiry) {
    // 直接读取缓存文件内容
    readfile($cache_file);
    exit();
} else {
    // 开始输出缓冲
    ob_start();
    // 在这里写你的动态内容生成代码
    echo '<h1>Welcome to my website!</h1>';
    // 结束输出缓冲,获取缓冲区的内容
    $content = ob_get_clean();
    // 把缓冲区的内容保存到缓存文件中
    file_put_contents($cache_file, $content);
    // 输出缓存内容到浏览器并结束程序执行
    echo $content;
    exit();
}

위 코드에서는 if 문을 사용하여 캐시 파일이 있는지 확인합니다. 존재하고 수정 시간이 만료되는 시간이면 캐시 파일의 내용을 직접 읽어 브라우저에 출력합니다. 그렇지 않은 경우 ob_start() 함수를 호출하여 출력 버퍼를 시작하고 동적 웹 페이지의 콘텐츠 생성 코드를 작성하고 ob_get_clean() 함수를 통해 캐시 콘텐츠를 가져와 $content 변수에 저장한 다음 file_put_contents( ) 함수를 사용하여 $content 변수의 내용을 캐시 파일에 저장합니다. 마지막으로 $content 변수의 내용이 브라우저에 출력되고 프로그램 실행이 종료됩니다.

요약

페이지 정적 캐싱 기술은 웹 페이지의 응답 속도와 사용자 경험을 크게 향상시키고 서버 부하와 네트워크 대역폭 사용량을 줄일 수 있습니다. PHP에서 페이지 정적 캐싱을 구현하는 방법은 여러 가지가 있습니다. 캐시 파일이 존재하고 만료되지 않았는지 확인하여 동적 페이지의 계산 및 처리를 줄이고 정적 HTML 파일 캐시를 생성하여 효율성을 향상시킬 수 있습니다.

위 내용은 PHP에서 페이지 정적 캐싱 코드를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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