Smarty 템 플 릿 엔진 캐 시 메커니즘 상세 설명
먼저 스마트 캐 시 와 컴 파일 을 말씀 드 리 겠 습 니 다.이것 은 두 가지 서로 다른 개념 입 니 다.컴 파일 은 기본 적 인 상황 에서 시 작 됩 니 다.캐 시 체 제 는 인위적인 오픈 이 필요 합 니 다.스마트 컴 파일 된 파일 인지 phop 파일 인지 실행 할 때 컴 파일 된 것 입 니 다.데이터 베 이 스 를 다 루 려 면 데이터 베 이 스 를 방문 해 야 하기 때문에 비용 도 적지 않 습 니 다.그래서 스마트 캐 시가 해결 해 야 합 니 다!
1.전역 캐 시 열기
$smarty->cache_dir = "/caches/"; //
$smarty->caching = true; // , flase
$smarty->cache_lifetime = 3600; //
2.한 페이지 에 여러 개의 캐 시 사용예 를 들 어 하나의 글 템 플 릿 페이지 는 여러 개의 글 페이지 를 만 들 수 있 습 니 다.물론 캐 시 를 여러 페이지 로 만 들 수 있 습 니 다.이 는 간단 합 니 다.display()방법 으로 두 번 째 인 자 를 설정 하고 유일한 식별 자 를 지정 하면 됩 니 다.다음 php 코드:
$smarty->display('index.tpl',$_GET["article_id"]);
위 와 같이 두 번 째 매개 변수 글 의 id 를 통 해 글 페이지 를 캐 시 합 니 다.3.캐 시 비용 줄 이기
즉,캐 시 된 페이지 는 데이터 베 이 스 를 조작 할 필요 가 없 으 며,is 를 통 해cached()방법 판단!
if(!$smarty->is_cached('index.tpl')){
//
}
$smarty->display('index.tpl');
4.캐 시 지우 기일반적으로 개발 과정 에서 캐 시 를 열지 않 습 니 다.캐 시 시간 내 에 출력 결과 가 변 하지 않 기 때 문 입 니 다.그러나 응용 과정 에서 캐 시 를 켜 면 웹 성능 을 크게 향상 시 킬 수 있 습 니 다.캐 시 를 지 우 는 방법 은 다음 과 같 습 니 다.
clear_all_cache();//
clear_cache('index.tpl');// index.tpl
clear_cache('index.tpl',cache_id);// id
5.부분 캐 시 닫 기한 페이지 의 일부 캐 시,다른 부분 은 캐 시 가 필요 하지 않 으 면 이렇게 할 수 있 습 니 다.예 를 들 어 사용자 로그 인 이름 을 표시 하려 면 캐 시 를 닫 아야 합 니 다.smarty 는 다음 과 같은 세 가지 해결 방법 을 제공 합 니 다.
(1)insert 템 플 릿 의 일부분 을 캐 시 되 지 않 습 니 다.
inser 태그 에서 사용 할 처리 함 수 를 정의 합 니 다.함수 이름 형식 은 insert 입 니 다.xx(array$params,object&$smarty)의 xx 는 insert 의 name 입 니 다.즉,함수 가 insert 라 고 정의 하면abc,템 플 릿 에서 사용 하 는 방법 은{insert name=abc}입 니 다.
매개 변 수 는$params 를 통 해 전 달 됩 니 다.
insert 플러그 인 으로 도 만 들 수 있 습 니 다.파일 이름 은 insert.xx.phop 이 고 함수 이름 은 smarty 입 니 다.insert_aa($params,&$smarty),xx 정의 동일
(2)$smarty->register_block($params,&$smarty)은 전체 페이지 의 한 조각 을 캐 시 하지 않 습 니 다.
Block 정의:
smarty_block_name($params,$content, &$smarty){return $content;}
//name
등록 block:
$smarty->register_block(name, smarty_block_name, false);
// false
템 플 릿 쓰기:
{name} {/name}
block 플러그 인 으로 쓰기:첫 번 째 단계:플러그 인 함수 정의:Block.cacheless.php,smarty plugins 디 렉 터 리 에 놓 기
Block.cacheless.php 의 내용 은 다음 과 같 습 니 다.
<?php
function smarty_block_cacheless($param, $content, &$smarty) {
return $content;
}
?>
두 번 째 단계:프로그램 및 템 플 릿 작성예제 프로그램:testCacheLess.php
<?php
include(Smarty.class.php);
$smarty = new Smarty;
$smarty->caching=true;
$smarty->cache_lifetime = 6;
$smarty->display(cache.tpl);
?>
사용 할 템 플 릿:cache.tpl
:{$smarty.now}<br>
{cacheless}
:{$smarty.now}
{/cacheless}
지금 실행 해 보 니 소 용이 없 었 습 니 다.두 줄 의 내용 이 모두 캐 시 되 었 습 니 다.STEP 3:스마트 바 꾸 기Compiler.class.php(주:이 파일 은 매우 중요 합 니 다.필요 할 때 복구 할 수 있 도록 백업 하 십시오)
찾기:
$this->_plugins[block][$tag_command] = array($plugin_func, null, null, null, true);
다음으로 변경:
if($tag_command == cacheless) $this->_plugins[block][$tag_command] = array($plugin_func, null, null, null, false);
else $this->_plugins[block][$tag_command] = array($plugin_func, null, null, null, true);
원문의 마지막 매개 변 수 를 false 로 바 꿀 수도 있 습 니 다.즉,기본 캐 시 를 닫 는 것 입 니 다.(3)register 사용function 플러그 인 이 캐 시 에서 출력 되 는 것 을 막 습 니 다.
index.tpl:
<div>{current_time}{/div}
index.php:
function smarty_function_current_time($params, &$smarty){
return date("Y-m-d H:m:s");
}
$smarty=new smarty();
$smarty->caching = true;
$smarty->register_function('current_time','smarty_function_current_time',false);
if(!$smarty->is_cached()){
.......
}
$smarty->display('index.tpl');
주석:함수 이름 형식:smartytype_name($params, &$smarty)
type 은 function
name 사용자 정의 탭 이름,여기{currenttime}
두 매개 변 수 는 필수 입 니 다.함수 에 사용 되 지 않 더 라 도 적어 야 합 니 다.두 매개 변수의 기능 이 같다.
더 많은 스마트 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
이 글 은 스마트 템 플 릿 을 기반 으로 한 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
관리 화면에서 자신의 검증기 데이터 정의CS-Cart는 기본 양식 검증 데이터를 미리 준비합니다. 하지만 자신의 검증을 만들고 싶은 장면은 많다. 그래서 오리지널 검증의 설치 방법을 설명해 드리겠습니다. 예) 입력한 값이 5자 이내인지 확인합니다. 이름:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.