>백엔드 개발 >PHP 튜토리얼 >TV 시리즈 Xue Pinggui 및 Wang Baochuan에 대한 줄거리 소개 PHP 캐싱 기술 소개

TV 시리즈 Xue Pinggui 및 Wang Baochuan에 대한 줄거리 소개 PHP 캐싱 기술 소개

WBOY
WBOY원래의
2016-07-29 08:35:171679검색

캐시는 임시 파일 교환 영역을 의미하며, 도구나 재료를 작업대로 옮기는 것처럼 컴퓨터는 가장 일반적으로 사용되는 파일을 메모리에서 가져와 임시로 캐시에 저장합니다. 사용될 때. 캐시는 RAM(전원이 꺼지면 손실되는 비영구적 저장소)을 사용하는 경우가 많기 때문에 작업이 완료된 후에도 파일은 영구 저장을 위해 하드 디스크 및 기타 저장소로 전송됩니다. 컴퓨터에서 가장 큰 캐시는 메모리 스틱입니다. 가장 빠른 캐시는 CPU에 내장된 L1 및 L2 캐시입니다. 그래픽 카드의 비디오 메모리는 GPU용 캐시도 있습니다. 디스크. 캐시를 하나로 이해하지 마십시오. 처리 방법에 대한 일반적인 용어입니다!
WEB 개발 시 높은 트래픽에 대처하는 가장 효과적인 방법은 캐싱 기술을 사용하는 것인데, 이는 서버 부하 성능을 효과적으로 향상시키고 시간에 따른 공간을 교환할 수 있습니다.
인터넷도 28결론이다. 바이두 검색의 키워드처럼 80%의 사람들이 20%의 내용을 검색하고 있으니 이 20%의 키워드에 해당하는 내용만 저장하면 된다. 수십억 개의 레코드 중에서 사용자가 필요로 하는 콘텐츠를 신속하게 반환하는데 매우 효과적입니다.
이 글에서는 PHP WEB 개발에서 일반적으로 사용되는 몇 가지 저장 방법을 살펴보겠습니다.
1. 범용 캐싱 기술:
데이터 캐싱: 여기에 언급된 데이터 캐싱은 페이지에 액세스할 때마다 해당 캐시된 데이터가 존재하는지 여부를 먼저 감지합니다. 존재하지 않는 경우 데이터베이스에 연결하여 데이터를 가져오고 쿼리 결과를 직렬화하여 파일에 저장하면 나중에 동일한 쿼리 결과를 캐시 테이블이나 파일에서 직접 얻을 수 있습니다.
가장 널리 사용되는 예는 Discuz의 검색 기능으로, 다음에 동일한 키워드를 검색할 때 결과 ID를 테이블에 캐시하고 캐시 테이블을 먼저 검색하는 기능입니다.
일반적인 방법으로는 여러 개의 테이블을 연관시킬 때 첨부된 테이블의 내용을 배열로 생성하고, 필요할 경우 배열을 분해해 저장한다는 장점이 있습니다. 하나의 테이블을 읽을 수 있지만 두 데이터를 동기화하려면 더 많은 단계가 필요하다는 단점이 있습니다. 데이터베이스는 항상 속도를 위해 병목 현상을 발생시키는 것이 핵심입니다.
2. 페이지 캐싱:
페이지에 액세스할 때마다 해당 캐시된 페이지 파일이 존재하는지 먼저 감지합니다. 존재하지 않으면 데이터베이스에 연결하여 데이터를 가져와 페이지를 표시하고 생성합니다. 캐시된 페이지 파일을 동시에 저장하므로 다음에 방문할 때 페이지 파일이 재생됩니다. (템플릿 엔진과 인터넷에 있는 일부 일반적인 PHP 캐싱 메커니즘 클래스에는 일반적으로 이 기능이 있습니다.)
3. 시간 트리거 캐싱:
파일이 존재하는지, 파일이 설정된 만료 시간보다 짧은지 확인하세요. 수정 타임스탬프가 현재 타임스탬프보다 이후입니다. 타임스탬프에서 만료 타임스탬프를 뺀 값이 더 크면 캐시를 사용하고, 그렇지 않으면 캐시를 업데이트합니다.
4. 콘텐츠 트리거 캐싱:
데이터가 삽입되거나 업데이트되면 PHP 캐시 메커니즘이 강제로 업데이트됩니다.
5. 정적 캐시:
여기서 언급하는 정적 캐시는 HTML이나 XML 등의 텍스트 파일을 직접 생성하고, 업데이트가 있을 때 이를 다시 생성하는 정적 캐시를 의미합니다. . 이것은 말하지 않습니다.
위 내용은 코드 수준의 솔루션입니다. 다른 프레임워크를 직접 CP하고 변경하기가 너무 게으릅니다. 내용도 비슷하고, 하기 쉽고, 여러 가지 방법으로 사용할 수 있지만, 다음 내용은 서버측 캐싱 솔루션, 비코드 레벨은
을 달성하기 위해 여러 당사자의 협력이 필요합니다. 6. 메모리 캐시:
Memcached는 데이터베이스를 줄이는 데 사용되는 고성능 분산 메모리 개체 PHP 캐싱 메커니즘 시스템입니다. 동적 애플리케이션에 로드하고 액세스 속도를 향상시킵니다.
7. PHP 버퍼:
eaccelerator, apc, phpa, xcache에 대해서는 언급하지 않겠습니다. 그런 것이 있다는 것을 아시면 괜찮습니다.
8. MYSQL 캐시:
이것도 비코드 수준으로 간주됩니다. 클래식 데이터베이스에서는 이 방법을 사용합니다. 아래 실행 시간은 0.09xxx 등입니다.
9. 역방향 프록시 기반 웹 캐시:
Nginx, SQUID, mod_proxy(apache2 이상은 mod_proxy와 mod_cache로 구분됩니다.)
10. DNS 폴링:
BIND는 오픈 소스 DNS 서버 소프트웨어입니다. 모두가 이것이 존재한다는 것을 아는 한 스스로 찾아보십시오.
chinacache 같은 일부 대형 웹사이트에서는 이렇게 하는 것으로 알고 있습니다. 간단히 말하면 동일한 페이지나 파일이 서로 다른 서버에 캐시되어 북쪽과 남쪽에 따라 자동으로 해당 서버로 파싱되는 것입니다.
캐싱 기술을 사용하는 이유는 무엇인가요? 그 이유는 간단합니다. 효율성을 높이기 때문입니다.프로그램 개발에서 정보를 얻는 주요 방법은 데이터베이스를 쿼리하는 것입니다. 또한 웹 서비스나 다른 방법을 사용할 수도 있습니다. 어떤 방법을 사용하든 큰 문제가 발생하면 효율성에 장애가 될 수 있습니다. 이러한 문제를 해결하기 위해 사람들은 프로그램의 합리적인 사용 효율성을 높이기 위해 최적화 소프트웨어(예: APC, Eaccelerator, Zend Optimizer 등)를 사용하는 많은 솔루션을 제안했습니다. 이러한 소프트웨어 중 일부는 프로그램을 원활하게 실행할 수 있는 경우가 많습니다. 효율성은 엄청나게 향상되었지만 이러한 소프트웨어를 설치하려면 호스트를 제어할 수 있어야 한다는 전제가 있습니다. 귀하의 서비스 제공업체가 일부 최적화 소프트웨어를 미리 설치했는지 확인하십시오. 그렇지 않은 경우 PHP를 직접 사용하여 해당 캐싱 기능을 구현해야 합니다. 이것이 당신에게 당혹감을 준다면, 다음의 글이 당신에게 영감을 줄 수 있다고 믿습니다.
많은 PHP 프로그래머들이 Adodb Smarty와 같은 골든 파트너를 사용하고 있으므로 먼저 캐싱 기능을 사용하는 방법을 살펴보겠습니다.
먼저 adodb에서 제공하는 데이터 캐싱 기능을 살펴보세요.
include('adodb.inc.php') # ADOdb에 공통되는 코드 로드
$ADODB_CACHE_DIR = ' /usr/ ADODB_cache';
$conn = &ADONewConnection('mysql'); # 연결 생성
$conn->PConnect('localhost','userid','','agora');# MySQL , agora db
$sql = '고객의 CustomerName, CustomerID 선택'
$rs = $conn->CacheExecute(15,$sql)
?
위와 같이 데이터를 쿼리할 때마다 해당 결과가 직렬화되어 파일에 저장됩니다. 앞으로는 데이터베이스를 직접 쿼리하지 않고도 캐시 파일에서 동일한 쿼리 문을 얻을 수 있습니다.
Smarty에서 제공하는 페이지 캐싱 기능을 살펴보겠습니다.
require('Smarty.class.php')
$smarty = new Smarty; smarty-> ;caching = true;
if(!$smarty->is_cached('index.tpl')) {
// 사용 가능한 캐시가 없습니다. 여기서 변수 할당을 수행하세요.
$contents = get_database_contents ();
$smarty->sign($contents);
$smarty->display('index.tpl')
?> 해당 페이지를 방문할 때마다 해당 캐시가 존재하는지 먼저 확인하고, 존재하지 않으면 데이터베이스에 연결하여 데이터를 가져오고 템플릿 변수 할당을 완료하고 페이지를 표시합니다. 동시에 캐시 파일을 생성하여 다음에 액세스할 때 캐시 파일이 역할을 수행하도록 하면 if 블록의 데이터 쿼리 문이 더 이상 실행되지 않습니다. 물론, 유효기간 설정, 캐시 그룹 설정 등 실제 사용 시 고려해야 할 사항이 많습니다. 자세한 내용은 스마티 매뉴얼의 캐싱 관련 장을 확인하실 수 있습니다.
위의 두 가지 인기 있는 PHP 구성 요소 캐싱 방법은 초점이 다릅니다. Adodb의 캐시는 데이터를 캐시하는 반면, Smarty의 캐시는 페이지를 캐시합니다. 캐싱 기능을 제공하는 다른 구성 요소가 많이 있습니다(예: PEAR::Cache_Lite 등). 실제 프로그래밍에서 어떤 솔루션을 사용하려면 특정 상황에 대한 구체적인 분석이 필요하며 포괄적으로 사용될 수도 있습니다.
이러한 구성 요소에 내장된 캐싱 솔루션을 사용할 때의 확실한 이점은 구현이 클라이언트에게 투명하다는 것입니다. 캐싱 세부 사항에 대해 너무 많이 생각하지 않고 필요한 설정(캐시 시간, 캐시 디렉터리 등)만 지정하면 시스템이 설정에 따라 자동으로 캐시를 관리합니다. 그러나 각 요청을 여전히 PHP로 구문 분석해야 하고 순수 정적에 비해 효율성이 크게 떨어지기 때문에 단점도 분명합니다. 이 경우에는 단지 동적을 수행하는 것만으로도 요구 사항을 충족할 수 없습니다. 캐싱만으로는 충분하지 않습니다. 예, 정적 캐싱을 구현해야 합니다.

이상에서는 TV 시리즈 Xue Pinggui 및 Wang Baochuan의 줄거리 소개와 TV 시리즈 Xue Pinggui 및 Wang Baochuan의 줄거리 소개를 포함하여 PHP 캐싱 기술을 소개했습니다. 관심 있는 친구들에게 도움이 되기를 바랍니다. PHP 튜토리얼.

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