PHP의 9가지 주요 캐싱 기술 요약에 대한 자세한 소개

黄舟
풀어 주다: 2023-03-06 13:32:02
원래의
1334명이 탐색했습니다.

1. 전체 페이지 정적 캐싱

즉, 모든 페이지는 html 정적 페이지로 생성됩니다. 정적 페이지는 사용자가 PHP 서버를 방문하지 않고 직접 액세스합니다. 처리하십시오. 이 방법은 dedecs와 같은 CMS 시스템에서 더 일반적입니다.

일반적인 구현 방법은 출력 캐싱을 사용하는 것입니다:

Ob_start()******要运行的代码*******$content = Ob_get_contents();****将缓存内容写入html文件*****Ob_end_clean();
로그인 후 복사

2. 페이지 부분 캐싱

페이지에서 자주 변경되지 않는 부분을 정적으로 캐시하는 반면, 자주 변경되는 블록은 캐시되지 않고 최종적으로 함께 결합되어 표시됩니다. 이는 ob_get_contents와 유사한 방법을 사용하거나 ESI와 같은 페이지를 사용하여 달성할 수 있습니다. 동적 페이지의 상대적으로 정적인 조각 부분을 캐시하는 데 사용됩니다(ESI 기술, Baidu 참조, 여기에 자세히 설명되어 있지 않음).

이 방법은 예를 들어 쇼핑몰의 제품 페이지에 사용할 수 있습니다.

3. 데이터 캐싱

이름에서 알 수 있듯이 데이터를 캐싱하는 방법입니다. , 쇼핑몰에서 제품 ID를 사용하여 특정 제품 정보를 요청하면 매장 정보, 제품 정보 등을 포함한 데이터를 얻을 수 있으며, 이러한 데이터는 파일 이름에 제품이 포함되어 있습니다. 고유한 식별자를 생성하기 위한 ID입니다. ;다음에 누군가 이 제품을 보고 싶다면 먼저 데이터베이스에 쿼리하지 않고 이 파일의 정보를 직접 조정하세요. 실제로 캐시 파일에 캐시된 내용은 php 배열입니다. 🎜>Ecmall 몰 시스템에서는 이 방법을 사용합니다;

4. 쿼리 캐싱

사실 이는 쿼리문에 따라 캐싱하는 데이터 캐싱과 같은 개념입니다. 쿼리를 통해 얻은 데이터를 파일에 캐시합니다. 다음에 동일한 쿼리가 발생하면 데이터베이스를 확인하는 대신 이 파일에서 데이터를 직접 검색합니다. 그러나 여기의 캐시 파일 이름은 다음을 기반으로 고유하게 식별되어야 합니다.

시간 변화에 따른 캐싱

사실 이는 실제 캐싱 방법이 아니며, 위의 캐싱 기술 2, 3, 4는 일반적으로 시간 변화 판단을 사용합니다. 유효한 캐시 파일 시간을 설정해야 하며, 이 유효 시간 내에 동일한 액세스가 먼저 캐시 파일의 내용을 가져옵니다. 그러나 설정된 캐시 시간을 초과하면 데이터베이스에서 데이터를 다시 가져와야 합니다. 예를 들어, 홈페이지는 2시간마다 업데이트되도록 설정되어 있습니다.

5. 콘텐츠 변경에 따라 캐시됩니다.

이것은 독립적인 캐싱 기술이 아니며 즉, 데이터베이스 내용이 수정되면 즉시 업데이트됩니다. 캐시 파일

예를 들어 트래픽이 많고 제품이 많은 쇼핑몰에서는 제품 테이블이 있어야 합니다. 상대적으로 크고 이 테이블에 대한 부담도 큽니다.


판매자가 백그라운드에서 제품 정보를 수정할 때 저장을 클릭하면 캐시 파일이 업데이트됩니다. 동시에 구매자가 제품 정보에 액세스하면 실제로는 정적 페이지에 액세스하므로 데이터베이스에 액세스할 필요가 없습니다.

제품 페이지가 캐시되지 않으면 액세스할 때마다 데이터베이스를 확인해야 합니다. 10만 명이 온라인으로 제품을 검색하면 서버에 대한 부담이 커집니다.

6、内存式缓存

提到这个,可能大家想到的首先就是Memcached;memcached是高性能的分布式内存缓存服务器。 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、 提高可扩展性。

它就是将需要缓存的信息,缓存到系统内存中,需要获取信息时,直接到内存中取;比较常用的方式就是 key–>value方式;

<?php 
     $memcachehost = &#39;192.168.6.191&#39;;
     $memcacheport = 11211;
     $memcachelife = 60;
     $memcache = new Memcache;
     $memcache->connect($memcachehost,$memcacheport) or die ("Could not connect");
     $memcache->set(&#39;key&#39;,&#39;缓存的内容&#39;);
     $get = $memcache->get($key);       //获取信息?>
로그인 후 복사

7、apache缓存模块

apache安装完以后,是不允许被cache的。如果外接了cache或squid服务器要求进行web加速的话,就需要在htttpd.conf里进行设置,当然前提是在安装apache的时候要激活mod_cache的模块。

安装apache时:./configure –enable-cache –enable-disk-cache –enable-mem-cache

8、php APC缓存扩展

Php有一个APC缓存扩展,windows下面为php_apc.dll,需要先加载这个模块,然后是在php.ini里面进行配置:

[apc] 
     extension=php_apc.dll 
     apc.rfc1867 = on 
     upload_max_filesize = 100M 
     post_max_size = 100M 
     apc.max_file_size = 200M 
     upload_max_filesize = 1000M 
     post_max_size = 1000M 
     max_execution_time = 600 ;   每个PHP页面运行的最大时间值(秒),默认30秒 
     max_input_time = 600 ;       每个PHP页面接收数据所需的最大时间,默认60 
     memory_limit = 128M ;       每个PHP页面所吃掉的最大内存,默认8M
로그인 후 복사

9、Opcode缓存

首先php代码被解析为Tokens,然后再编译为Opcode码,最后执行Opcode码,返回结果;所以,对于相同的php文件,第一次运行时可以缓存其Opcode码,下次再执行这个页面时,直接会去找到缓存下的opcode码,直接执行最后一步,而不再需要中间的步骤了。

比较知名的是XCache、Turck MM Cache、PHP Accelerator等。


위 내용은 PHP의 9가지 주요 캐싱 기술 요약에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿