백엔드 개발 PHP 튜토리얼 PHP 웹페이지 캐싱 기술의 장점과 코드 예시에 대한 자세한 설명

PHP 웹페이지 캐싱 기술의 장점과 코드 예시에 대한 자세한 설명

Aug 01, 2020 pm 04:25 PM
php 캐싱 기술 웹페이지

PHP 웹페이지 캐싱 기술의 장점과 코드 예시에 대한 자세한 설명

정적 프런트엔드: 동적 페이지를 구문 분석하여 정적 페이지로 저장

파일 캐시: 쿼리 결과를 파일, XML로 저장

메모리 캐시: memcache

php 캐시: XCache, eaccelerator 등

Memcache 고성능 분산 메모리 개체 캐시 시스템으로 메모리에 통일된 거대한 해시 테이블을 유지하여 이미지, 동영상, 파일, 데이터베이스 검색 결과 등 다양한 형식의 데이터를 저장할 수 있습니다. 간단히 말하면, 데이터가 메모리로 호출된 다음 메모리에서 읽혀지므로 읽기 속도가 크게 향상됩니다. Memcache는 원래 LiveJournal 액세스 속도를 높이기 위해 개발되었으며 나중에 많은 대규모 웹사이트에서 채택되었습니다. Memcached는 하나 이상의 서버에서 데몬으로 실행되며 언제든지 클라이언트로부터 연결 및 작업을 수신합니다.

XCache는 오픈 소스 opcode 캐시/최적화 프로그램입니다. 즉, 컴파일된 PHP 데이터를 공유 메모리에 버퍼링하여 반복적인 컴파일 프로세스를 방지하고 버퍼를 직접 Zone 컴파일된 코드에 사용할 수 있습니다. 속도를 높이세요. 일반적으로 페이지 생성 속도가 2~5배 증가하여 서버 부하가 줄어듭니다.

************************ ***** ****************************************************** *********************************************** *** ***************************

1. 범용 캐싱 기술:

데이터 캐싱: 여기서 언급되는 데이터 캐싱은 다음을 참조합니다. 데이터베이스 쿼리 PHP 캐시 메커니즘은 페이지에 액세스할 때마다 해당 캐시 데이터가 있는지 먼저 감지하고, 해당 데이터가 존재하지 않으면 데이터베이스에 연결하여 데이터를 얻은 다음 쿼리 결과를 직렬화하여 저장합니다. 쿼리 결과는 캐시 테이블이나 파일에서 직접 가져옵니다.

가장 널리 사용되는 예는 Discuz의 검색 기능으로, 다음에 동일한 키워드를 검색할 때 결과 ID를 테이블에 캐시하고 캐시 테이블을 먼저 검색하는 기능입니다.

일반적인 방법은 여러 개의 테이블이 연관되어 있을 때 첨부된 테이블의 내용을 배열로 생성하고 필요할 경우 배열을 하나만 분해한다는 장점이 있습니다. 테이블을 읽을 수 있지만 데이터를 동기화하는 데 더 많은 단계가 필요하다는 단점이 있습니다. 데이터베이스는 항상 속도를 위해 병목 현상이 발생합니다.

2. 페이지 캐싱:

페이지에 액세스할 때마다 해당 캐시된 페이지 파일이 존재하는지 먼저 감지하고, 존재하지 않는 경우 데이터베이스에 연결하여 데이터를 가져오고 페이지를 표시합니다. 캐시된 페이지 파일을 동시에 저장하므로 다음에 방문할 때 페이지 파일이 재생됩니다. (템플릿 엔진과 인터넷의 일부 일반적인 PHP 캐싱 메커니즘 클래스에는 일반적으로 이 기능이 있습니다)

3. 시간 트리거 캐싱:

파일이 존재하는지, 타임스탬프가 설정된 만료 시간보다 짧은지 확인하세요. 수정 타임스탬프가 현재 타임스탬프보다 이후입니다. 타임스탬프에서 만료 타임스탬프를 뺀 값이 더 크면 캐시를 사용하고, 그렇지 않으면 캐시를 업데이트합니다.

4. 콘텐츠 트리거 캐싱:

  데이터가 삽입되거나 업데이트되면 PHP 캐시 메커니즘이 강제로 업데이트됩니다.

5. 정적 캐시:

여기서 언급하는 정적 캐시는 HTML이나 XML 등의 텍스트 파일을 직접 생성하고 업데이트가 있을 때 다시 생성하는 정적 캐시를 의미합니다. 이것은 말하지 않습니다.

위 내용은 코드 수준 솔루션입니다. 다른 프레임워크를 직접 CP하고 변경하기에는 너무 게으릅니다. 내용도 비슷하고, 여러 가지 방법으로 사용할 수 있지만, 다음 내용은 서버입니다. - 비코드 레벨, 이를 달성하려면 여러 당사자의 협력이 필요합니다

6. 메모리 캐시:

  Memcached는 데이터베이스를 줄이는 데 사용되는 고성능 분산 메모리 객체 PHP 캐싱 메커니즘 시스템입니다. 동적 애플리케이션에 로드하면 액세스 속도가 향상됩니다.

7. PHP 버퍼:

eaccelerator, apc, phpa, xcache에 대해서는 언급하지 않겠습니다. OK

8. MYSQL 캐시:

이것도 비코드 수준으로 간주됩니다. 아래의 실행 시간을 보면 0.09xxx 등이 역방향 프록시 기반입니다. :

 예: Nginx, SQUID, mod_proxy(apache2 이상은 mod_proxy와 mod_cache로 구분됩니다.)

10. DNS 폴링:

 

BIND는 오픈 소스 DNS 서버 소프트웨어입니다. . 직접 검색해 보세요. 이 항목이 존재한다는 것만 알아두세요.

chinacache와 같은 일부 대형 웹사이트에서는 간단히 말해서 다중 서버인 것으로 알고 있습니다. 동일한 페이지나 파일이 서로 다른 서버에 캐시되어 북쪽과 남쪽에 따라 자동으로 해당 서버로 파싱됩니다.

PHP 웹페이지 캐싱 예제

  • ob_start():页面缓存开始的标志,此函数一下的内容直至ob_end_flush()或者ob_end_clean()都保存在页面缓存中;
  • ob_get_contents():用来获取页面缓存中的内容,获取到以后呢,我们就可以想怎么处理这些内容都行了,过滤字段啦,匹配内容啦,都可以~~~ :)
  • ob_end_flush():表示页面缓存结束。并且经我验证,缓存的内容将输出到当前页面上,也就是可以显示缓存内容。

用此三个php函数,就可以实现强大的功能。如果数据库查询量较大,可以用cache来解决这个问题。

首先,设定过期时间,如果要求缓存文件2个小时过期,就可以设定cache_time为3600*2;通过filectime()来获取缓存文件的创建时间(或 filemtime()获取修改时间),如果当前时间跟文件的创建时间超过限定的过期时间,就可以通过上面三个函数,首先从数据库中取出数据,然后开始缓存ob_start(),然后把要生成的页面的html代码写在缓存中,缓存结束后通过ob_get_contents()获取到缓存的内容,然后通过fwrite把缓存内容写到静态页面html。

如果未过期,直接读取cache中的静态页面即可,避免了大量的数据库访问。

<?php
$_time =10;
$dir="D:\\php\\";
 
function cache_start($_time, $dir)
{
 $cachefile = $dir.&#39;/&#39;.sha1($_SERVER[&#39;REQUEST_URI&#39;]).&#39;.html&#39;;
 $cachetime = $_time;
 ob_start();
 if(file_exists($cachefile) && (time()-filemtime($cachefile) < $cachetime))
 {
  include($cachefile);
  ob_end_flush();
  exit;
 }
}
 
function cache_end($dir)
{
 $cachefile = $dir.&#39;/&#39;.sha1($_SERVER[&#39;REQUEST_URI&#39;]).&#39;.html&#39;;
 $fp = fopen($cachefile, &#39;w&#39;);
 fwrite($fp, ob_get_contents());
 fclose($fp);
 ob_end_flush();
}
 
cache_start($_time, $dir);
//以下是输出的内容,放在cache_start和cache_end两个方法之间
for ($i=0;$i<5;$i++)
{
 echo $i;
 sleep(1);
}
cache_end($dir);
?>
로그인 후 복사

相关学习推荐:PHP编程从入门到精通

위 내용은 PHP 웹페이지 캐싱 기술의 장점과 코드 예시에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

<gum> : Bubble Gum Simulator Infinity- 로얄 키를 얻고 사용하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
Nordhold : Fusion System, 설명
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora : 마녀 트리의 속삭임 - Grappling Hook 잠금 해제 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
<exp exp> 모호한 : 원정 33- 완벽한 크로마 촉매를 얻는 방법
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP와 Python : 다른 패러다임이 설명되었습니다 PHP와 Python : 다른 패러다임이 설명되었습니다 Apr 18, 2025 am 12:26 AM

PHP는 주로 절차 적 프로그래밍이지만 객체 지향 프로그래밍 (OOP)도 지원합니다. Python은 OOP, 기능 및 절차 프로그래밍을 포함한 다양한 패러다임을 지원합니다. PHP는 웹 개발에 적합하며 Python은 데이터 분석 및 기계 학습과 같은 다양한 응용 프로그램에 적합합니다.

PHP : 데이터베이스 및 서버 측 로직 처리 PHP : 데이터베이스 및 서버 측 로직 처리 Apr 15, 2025 am 12:15 AM

PHP는 MySQLI 및 PDO 확장 기능을 사용하여 데이터베이스 작업 및 서버 측 로직 프로세싱에서 상호 작용하고 세션 관리와 같은 기능을 통해 서버 측로 로직을 처리합니다. 1) MySQLI 또는 PDO를 사용하여 데이터베이스에 연결하고 SQL 쿼리를 실행하십시오. 2) 세션 관리 및 기타 기능을 통해 HTTP 요청 및 사용자 상태를 처리합니다. 3) 트랜잭션을 사용하여 데이터베이스 작업의 원자력을 보장하십시오. 4) SQL 주입 방지, 디버깅을 위해 예외 처리 및 폐쇄 연결을 사용하십시오. 5) 인덱싱 및 캐시를 통해 성능을 최적화하고, 읽을 수있는 코드를 작성하고, 오류 처리를 수행하십시오.

PHP의 목적 : 동적 웹 사이트 구축 PHP의 목적 : 동적 웹 사이트 구축 Apr 15, 2025 am 12:18 AM

PHP는 동적 웹 사이트를 구축하는 데 사용되며 해당 핵심 기능에는 다음이 포함됩니다. 1. 데이터베이스와 연결하여 동적 컨텐츠를 생성하고 웹 페이지를 실시간으로 생성합니다. 2. 사용자 상호 작용 및 양식 제출을 처리하고 입력을 확인하고 작업에 응답합니다. 3. 개인화 된 경험을 제공하기 위해 세션 및 사용자 인증을 관리합니다. 4. 성능을 최적화하고 모범 사례를 따라 웹 사이트 효율성 및 보안을 개선하십시오.

PHP와 Python 중에서 선택 : 가이드 PHP와 Python 중에서 선택 : 가이드 Apr 18, 2025 am 12:24 AM

PHP는 웹 개발 및 빠른 프로토 타이핑에 적합하며 Python은 데이터 과학 및 기계 학습에 적합합니다. 1.PHP는 간단한 구문과 함께 동적 웹 개발에 사용되며 빠른 개발에 적합합니다. 2. Python은 간결한 구문을 가지고 있으며 여러 분야에 적합하며 강력한 라이브러리 생태계가 있습니다.

PHP와 Python : 그들의 역사에 깊은 다이빙 PHP와 Python : 그들의 역사에 깊은 다이빙 Apr 18, 2025 am 12:25 AM

PHP는 1994 년에 시작되었으며 Rasmuslerdorf에 의해 개발되었습니다. 원래 웹 사이트 방문자를 추적하는 데 사용되었으며 점차 서버 측 스크립팅 언어로 진화했으며 웹 개발에 널리 사용되었습니다. Python은 1980 년대 후반 Guidovan Rossum에 의해 개발되었으며 1991 년에 처음 출시되었습니다. 코드 가독성과 단순성을 강조하며 과학 컴퓨팅, 데이터 분석 및 기타 분야에 적합합니다.

PHP를 사용하는 이유는 무엇입니까? 설명 된 장점과 혜택 PHP를 사용하는 이유는 무엇입니까? 설명 된 장점과 혜택 Apr 16, 2025 am 12:16 AM

PHP의 핵심 이점에는 학습 용이성, 강력한 웹 개발 지원, 풍부한 라이브러리 및 프레임 워크, 고성능 및 확장 성, 크로스 플랫폼 호환성 및 비용 효율성이 포함됩니다. 1) 배우고 사용하기 쉽고 초보자에게 적합합니다. 2) 웹 서버와 우수한 통합 및 여러 데이터베이스를 지원합니다. 3) Laravel과 같은 강력한 프레임 워크가 있습니다. 4) 최적화를 통해 고성능을 달성 할 수 있습니다. 5) 여러 운영 체제 지원; 6) 개발 비용을 줄이기위한 오픈 소스.

PHP의 영향 : 웹 개발 및 그 이상 PHP의 영향 : 웹 개발 및 그 이상 Apr 18, 2025 am 12:10 AM

phphassignificallyimpactedwebdevelopmentandextendsbeyondit

PHP vs. Python : 사용 사례 및 응용 프로그램 PHP vs. Python : 사용 사례 및 응용 프로그램 Apr 17, 2025 am 12:23 AM

PHP는 웹 개발 및 컨텐츠 관리 시스템에 적합하며 Python은 데이터 과학, 기계 학습 및 자동화 스크립트에 적합합니다. 1.PHP는 빠르고 확장 가능한 웹 사이트 및 응용 프로그램을 구축하는 데 잘 작동하며 WordPress와 같은 CMS에서 일반적으로 사용됩니다. 2. Python은 Numpy 및 Tensorflow와 같은 풍부한 라이브러리를 통해 데이터 과학 및 기계 학습 분야에서 뛰어난 공연을했습니다.

See all articles