백엔드 개발 PHP 튜토리얼 ThinkPHP의 정적 캐싱과 동적 캐싱 구현 방법

ThinkPHP의 정적 캐싱과 동적 캐싱 구현 방법

May 23, 2018 am 11:23 AM
php thinkphp 동적

이 글은 정적 캐싱과 동적 캐싱을 구현하기 위한 ThinkPHP의 예제 코드를 주로 소개합니다. 관심 있는 친구들은 참고해 보세요.

정적 캐싱 기능을 사용하려면, HTML_CACHE_ON 매개변수에 대해 HTML_CACHE_RULES 구성 매개변수를 사용하여 정적 캐시 규칙 파일을 설정합니다.

정적 규칙 정의

'HTML_CACHE_ON'   =>  true, // 开启静态缓存
'HTML_CACHE_TIME'  =>  60,  // 全局静态缓存有效期(秒)
'HTML_FILE_SUFFIX' =>  '.shtml', // 设置静态缓存文件后缀
'HTML_CACHE_RULES' =>   array( // 定义静态缓存规则
   // 定义格式1 数组方式
   '静态地址'  =>   array('静态规则', '有效期', '附加规则'), 
   // 定义格式2 字符串方式
   '静态地址'  =>   '静态规则', 
)
로그인 후 복사


정적 캐시 파일의 루트 디렉터리는 HTML_PATH에 정의된 경로 아래에 있으며, 정의된 정적 규칙이 있는 작업만 정적으로 캐시됩니다. 그리고 정적 캐시는 다양한 스토리지 유형을 지원합니다. 정적 캐싱은 GET 요청에서만 작동합니다.


정적 주소

전역 작업 정적 규칙


'read'=>array('{id}',60)//定义所有的read操作的静态规则
로그인 후 복사


전역 컨트롤러 정적 규칙 정의


'user:'=>array('User/{:action}_{id}','600')//定义所有的User控制器的静态规则
로그인 후 복사


De 벌금 특정 컨트롤러 작동의 정적 상태 규칙/ /정적 캐싱을 위한 블로그 컨트롤러의 읽기 작업 정의

'blog:read'=>array('{id}',0)//参数为0表示永久缓存
로그인 후 복사


전역 정적 캐싱 규칙 정의


'*'=>array('{$_SERVER.REQUEST_URI|md5}')//这个属于特殊情况下的使用,任何模块的操作都适用
로그인 후 복사


정적 규칙


정적 규칙이 사용됩니다. 이름을 정의하세요 생성할 정적 파일의 정적 규칙 정의는 충돌이 없음을 보장해야 합니다.

시스템 변수 사용


{$_×××|function}//_GET、_REQUEST、_SERVER、_SESSION、_COOKIE
{$_GET.name} 
{$_SERVER.REQUEST_URI|md5}
로그인 후 복사


프레임워크 맞춤형 변수 사용


코드 복사

코드는 다음과 같습니다.

{:module}/{:controller}_{: action}/ /{:module}, {:controller} 및 {:action}은 각각 현재 모듈 이름, 컨트롤러 이름 및 작업 이름을 나타냅니다.



_GET 변수 사용


{var|function}//{id}其实等效于 {$_GET.id}
로그인 후 복사


함수 직접 사용


{|function}//{|time},time函数获取时间后作为文件名称
로그인 후 복사


혼합 정의


'{id},{name|md5}' //在{}之外的字符作为字符串对待,如果包含有"/",会自动创建目录。
{:module}/{:action}_{id}//会在静态目录下面创建模块名称的子目录,然后写入操作名_id.shtml 文件。
로그인 후 복사


동적 캐싱


[S 메소드 데이터 캐시]

캐시 초기화

S(array('type'=>'xcache','expire'=>60));
로그인 후 복사


현재 시스템에서 지원하는 캐시 유형은 다음과 같습니다: Apachenote, Apc, Db, Eaccelerator, File, Memcache, Redis, Shmop, Sqlite, Wincache 및 엑스캐시. S 메소드가 초기화를 위한 타입 파라미터를 전달하지 않으면 구성 파일에 설정된 DATA_CACHE_TYPE 파라미터 값을 기본 타입으로 읽어온다. 마찬가지로 prefix 매개변수를 전달하지 않으면 구성 파일의 DATA_CACHE_PREFIX 매개변수 값을 읽습니다. 만료 매개변수를 전달하지 않으면 DATA_CACHE_TIME 구성 값을 기본값으로 읽습니다.


글로벌 캐싱 방법의 경우 일반적으로 혼동을 피하기 위해 다양한 애플리케이션을 구별하기 위해 접두사(캐시 접두사) 매개 변수를 추가하는 것이 좋습니다.

캐시 설정

데이터 캐시는 캐시 대기열을 지원할 수 있습니다. 간단히 말해서, 초기화 중에 길이 매개변수만 지정하면 됩니다.


S('name',$value);
S('name',$value,300);//缓存数据300秒
S('name',$value,array('type'=>'file','expire'=>300));//改变之前的缓存方式或者更多的参数
S(array('type'=>'xcache','length'=>100,'expire'=>60));//系统只会缓存最近的100条缓存数据。
로그인 후 복사


캐시 읽기


$value = S('name');//如果缓存标识不存在或者已经过期,则返回false,否则返回缓存值。
로그인 후 복사


캐시 삭제


S('name',null);
로그인 후 복사


참고: 각 캐시를 사용할 때 ThinkPHP는 해당 드라이버 파일을 로드해야 합니다. 을 클릭하고 해당 구성을 설정합니다.

사용 예

$user = M('User');
$value = S('list');
if (empty($value)) {
  $list = $user->select();
  S('list', $list, 3600);
  echo '这个是直接从数据库中读取的文件';
  dump($list);
} else {
  echo '这个是缓存文件';
  dump($value);
}
로그인 후 복사


[빠른 캐시]


시스템은 더 빠른 작업을 위해 빠른 캐시 방법 F도 제공합니다. 그러나 F 방법에는 유효 기간이 없으며 F 방법에서 지원할 수 있습니다. 다양한 저장 유형이 파일 유형인 경우 기본적으로 DATA_PATH 디렉토리에 저장됩니다.

빠른 캐시 데이터


F('data',$Data);
F('data',$Data,TEMP_PATH);//快速缓存Data数据,保存到指定的目录
F('User/data',$Data);//F方法支持自动创建缓存子目录,在DATA_PATH目录下面缓存data数据,如果User子目录不存在,则自动创建。
로그인 후 복사


캐시 데이터 가져오기


$Data = F('data');
로그인 후 복사


캐시 데이터 삭제


F('data',NULL);
로그인 후 복사


[쿼리 캐시]


쿼리 캐시 기능은 모든 데이터베이스를 지원하며, 모든 캐싱 방법과 유효 기간을 지원합니다.

쿼리 캐시를 사용할 때는 Model 클래스의 캐시 메서드만 호출하면 됩니다.


$Model->cache(true)->where('status=1')->select();
로그인 후 복사


cache(true)를 사용하면 현재 쿼리 조건과 쿼리 시 기타 정보를 기반으로 고유한 ID를 가진 쿼리 캐시가 생성됩니다. 키라는 이름의 캐시를 직접 쿼리합니다.


$Model->cache('cache_name')->select();
로그인 후 복사


기본적으로 캐시 방식은 DATA_CACHE_TYPE 매개변수에 설정된 캐시 방식을 사용합니다. (시스템 기본값은 File이며, 이는 파일 캐시가 사용됨을 의미합니다.) 캐시 유효 기간은 에서 설정한 시간입니다. DATA_CACHE_TIME 매개변수는 캐싱 방법과 유효 기간을 별도로 지정할 수도 있습니다.


$Model->cache(true,60,'xcache')->select();
로그인 후 복사


쿼리 캐시의 키를 지정하면 S 메서드를 통해 쿼리 캐시의 내용을 외부에서 직접 얻을 수 있습니다.


$value = S('cache_name');
로그인 후 복사


쿼리 캐시는 select 메서드 외에도 find 및 getField 메서드는 물론 파생 메서드(통계 쿼리 및 동적 쿼리 메서드 포함)도 지원합니다.


$Model->where($map)->cache('key',60)->find();
로그인 후 복사

이 글은 주로 공식 문서에서 발췌한 내용입니다. 궁금하신 사항은 ThinkPHP3.2 공식 문서-캐싱을 참고해주세요

위 내용은 모두의 학습에 도움이 되기를 바랍니다.


관련 권장 사항:

PHPMyAdmin은 Solution_javascript 기술을 가져올 때 파일 크기가 PHP 제한을 초과한다는 메시지를 표시합니다.

php 공통 페이지 점프 방법_javascript 기술 요약

PHP와 NodeJs

에서 개발한 애플리케이션 간에 Session_node.js를 공유하는 방법

위 내용은 ThinkPHP의 정적 캐싱과 동적 캐싱 구현 방법의 상세 내용입니다. 자세한 내용은 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 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

JWT (JSON Web Tokens) 및 PHP API의 사용 사례를 설명하십시오. JWT (JSON Web Tokens) 및 PHP API의 사용 사례를 설명하십시오. Apr 05, 2025 am 12:04 AM

JWT는 주로 신분증 인증 및 정보 교환을 위해 당사자간에 정보를 안전하게 전송하는 데 사용되는 JSON을 기반으로 한 개방형 표준입니다. 1. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. 2. JWT의 작업 원칙에는 세 가지 단계가 포함됩니다. JWT 생성, JWT 확인 및 Parsing Payload. 3. PHP에서 인증에 JWT를 사용하면 JWT를 생성하고 확인할 수 있으며 사용자 역할 및 권한 정보가 고급 사용에 포함될 수 있습니다. 4. 일반적인 오류에는 서명 검증 실패, 토큰 만료 및 대형 페이로드가 포함됩니다. 디버깅 기술에는 디버깅 도구 및 로깅 사용이 포함됩니다. 5. 성능 최적화 및 모범 사례에는 적절한 시그니처 알고리즘 사용, 타당성 기간 설정 합리적,

PHP에서 늦은 정적 결합을 설명하십시오 (정적 : :). PHP에서 늦은 정적 결합을 설명하십시오 (정적 : :). Apr 03, 2025 am 12:04 AM

정적 바인딩 (정적 : :)는 PHP에서 늦은 정적 바인딩 (LSB)을 구현하여 클래스를 정의하는 대신 정적 컨텍스트에서 호출 클래스를 참조 할 수 있습니다. 1) 구문 분석 프로세스는 런타임에 수행됩니다. 2) 상속 관계에서 통화 클래스를 찾아보십시오. 3) 성능 오버 헤드를 가져올 수 있습니다.

PHP 및 Python : 두 가지 인기있는 프로그래밍 언어를 비교합니다 PHP 및 Python : 두 가지 인기있는 프로그래밍 언어를 비교합니다 Apr 14, 2025 am 12:13 AM

PHP와 Python은 각각 고유 한 장점이 있으며 프로젝트 요구 사항에 따라 선택합니다. 1.PHP는 웹 개발, 특히 웹 사이트의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 간결한 구문을 가진 데이터 과학, 기계 학습 및 인공 지능에 적합하며 초보자에게 적합합니다.

php magic 방법 (__construct, __destruct, __call, __get, __set 등)이란 무엇이며 사용 사례를 제공합니까? php magic 방법 (__construct, __destruct, __call, __get, __set 등)이란 무엇이며 사용 사례를 제공합니까? Apr 03, 2025 am 12:03 AM

PHP의 마법 방법은 무엇입니까? PHP의 마법 방법은 다음과 같습니다. 1. \ _ \ _ Construct, 객체를 초기화하는 데 사용됩니다. 2. \ _ \ _ 파괴, 자원을 정리하는 데 사용됩니다. 3. \ _ \ _ 호출, 존재하지 않는 메소드 호출을 처리하십시오. 4. \ _ \ _ get, 동적 속성 액세스를 구현하십시오. 5. \ _ \ _ Set, 동적 속성 설정을 구현하십시오. 이러한 방법은 특정 상황에서 자동으로 호출되어 코드 유연성과 효율성을 향상시킵니다.

PHP : 웹 개발의 핵심 언어 PHP : 웹 개발의 핵심 언어 Apr 13, 2025 am 12:08 AM

PHP는 서버 측에서 널리 사용되는 스크립팅 언어이며 특히 웹 개발에 적합합니다. 1.PHP는 HTML을 포함하고 HTTP 요청 및 응답을 처리 할 수 ​​있으며 다양한 데이터베이스를 지원할 수 있습니다. 2.PHP는 강력한 커뮤니티 지원 및 오픈 소스 리소스를 통해 동적 웹 컨텐츠, 프로세스 양식 데이터, 액세스 데이터베이스 등을 생성하는 데 사용됩니다. 3. PHP는 해석 된 언어이며, 실행 프로세스에는 어휘 분석, 문법 분석, 편집 및 실행이 포함됩니다. 4. PHP는 사용자 등록 시스템과 같은 고급 응용 프로그램을 위해 MySQL과 결합 할 수 있습니다. 5. PHP를 디버깅 할 때 error_reporting () 및 var_dump ()와 같은 함수를 사용할 수 있습니다. 6. 캐싱 메커니즘을 사용하여 PHP 코드를 최적화하고 데이터베이스 쿼리를 최적화하며 내장 기능을 사용하십시오. 7

PHP 실행 : 실제 예제 및 응용 프로그램 PHP 실행 : 실제 예제 및 응용 프로그램 Apr 14, 2025 am 12:19 AM

PHP는 전자 상거래, 컨텐츠 관리 시스템 및 API 개발에 널리 사용됩니다. 1) 전자 상거래 : 쇼핑 카트 기능 및 지불 처리에 사용됩니다. 2) 컨텐츠 관리 시스템 : 동적 컨텐츠 생성 및 사용자 관리에 사용됩니다. 3) API 개발 : 편안한 API 개발 및 API 보안에 사용됩니다. 성능 최적화 및 모범 사례를 통해 PHP 애플리케이션의 효율성과 유지 보수 성이 향상됩니다.

CURL 오류 문제를 해결하는 방법 77 Elasticsearch 8에 연결할 때 ThinkPhp6 및 Elasticsearch-PHP 클라이언트를 사용하는 방법은 무엇입니까? CURL 오류 문제를 해결하는 방법 77 Elasticsearch 8에 연결할 때 ThinkPhp6 및 Elasticsearch-PHP 클라이언트를 사용하는 방법은 무엇입니까? Mar 31, 2025 pm 11:36 PM

Elasticsearch-PHP 클라이언트와 결합 된 ThinkPHP6 프레임 워크 사용 ELASTICSEARCH를 작동 ...

PHP vs. Python : 차이점 이해 PHP vs. Python : 차이점 이해 Apr 11, 2025 am 12:15 AM

PHP와 Python은 각각 고유 한 장점이 있으며 선택은 프로젝트 요구 사항을 기반으로해야합니다. 1.PHP는 간단한 구문과 높은 실행 효율로 웹 개발에 적합합니다. 2. Python은 간결한 구문 및 풍부한 라이브러리를 갖춘 데이터 과학 및 기계 학습에 적합합니다.

See all articles