Smarty 설정 과 고급 캐 시 기술 공유
4991 단어 스마트 설정
require('../libs/Smarty.class.php');
$smarty = new Smarty;
//$smarty->force_compile = true; //
$smarty->debugging = true; //
$smarty->caching = true; //
$smarty->cache_lifetime = 120; // ( )
$smarty->cache_dir = MY_SMARTY_DIR . '/cache/' ; //
주의:캐 시 파일 이 탐색 할 때마다 변 하 는 것 을 발견 하면 Smarty 의 force 를 보십시오.copile,Smarty 가 템 플 릿 을 호출 할 때마다 컴 파일 하도록 강요 합 니 다.이 설정 은$copile 을 받 지 않 습 니 다.check 의 제한.기본 적 인 상황 에서 그것 은 무효 이다.개발 과 디 버 깅 에 편리 합 니 다.하지만 제품 환경 에 서 는 사용 할 수 없습니다.캐 시 를 시작 하면 매번 캐 시 파일 을 다시 생 성 합 니 다.$smarty->forcecompile = false; //Smarty 캐 시 기술 의 전역 캐 시 부분 캐 시 insert 법 동적 block 법 플러그 인 block 법 전역 캐 시 기술 을 강제로 컴 파일 하 는 것 은 말 그대로 전체 페이지 를 캐 시 파일 로 만 드 는 것 입 니 다.이 캐 시 파일 의 생존 시간 을 지정 하고 지 정 된 시간 내 에 전체 페이지 를 다시 탐색 하면 캐 시 파일 을 직접 읽 습 니 다
$smarty->caching = true; //
$smarty->cache_lifetime = 120; // ( )
메모:하나의 템 플 릿 에 하나의 캐 시 파일 만 있 을 수 있 습 니 다.템 플 릿 에 여러 페이지 가 존재 한다 면 캐 시 에 ID 를 설정 해 야 합 니 다.예 를 들 어 한 페이지 에 여러 개의 글 이 있 습 니 다.http://website/index.php?p=1 http://website/index.php?p=2 4.567913.중점:캐 시 기술 을 사용 하 는 이 유 는 데이터베이스 에 대한 읽 기와 쓰 기 를 줄 이기 위해 서 입 니 다.따라서 우 리 는$smarty->isCached(index.tpl)로 캐 시가 존재 하 는 지 여 부 를 판단 하고 존재 하면 데이터 베 이 스 를 다시 조작 하지 마 십시오
//$_SERVER['REQUEST_URI']
// URL( ? ) md5
$url=md5($_SERVER['REQUEST_URI']);
//
$smarty->display('index.tpl',$url);
여기 또 문제 가 생 겼 습 니 다.만약 에 제 가 데이터 뱅 크 의 어떤 내용 을 바 꾸 었 다 면 디 스 플레이 내용 을 업데이트 하고 싶 지만 캐 시 는 아직 소멸 시간 이 되 지 않 았 습 니 다.그러면 어떻게 해 야 합 니까?$smarty->clearCache("index.tpl"); 위의 clearCache 는 이 문 제 를 해결 할 수 있 습 니 다.데 이 터 를 업데이트 한 후 clearCache 를 호출 하여 캐 시 를 지우 면 됩 니 다.PS:저 는 Smarty 3 버 전 을 사 용 했 습 니 다.이 버 전 은 여러 가지 방법의 이름 이 바 뀌 었 습 니 다.Smarty 2 라면"Call of unknown method'isCached'가 나 옵 니 다.$smarty->is 를 사용 하 세 요.cached()。 뒤에 나타 난 Smarty 3:registerPlugin(),Smarty 2:registerblock()도 버 전의 문제 입 니 다.다음은 캐 시 와 캐 시 없 는 속도 비교:1.첫 번 째 탐색,캐 시 없 음 Total Time 0.01421두 번 째 탐색,캐 시 Total Time 0.00308
4.567916.여기 제 index.phop 에는 몇 줄 의 코드 만 있 습 니 다.데이터 양 이 많 으 면 현저 한 차이 가 있 습 니 다.부분 캐 시 기술 부분 캐 시=일부 캐 시 는 한 페이지 의 캐 시 입 니 다.모두 캐 시 를 만 드 는 것 이 아 닙 니 다.특정한 기능 모듈 이 캐 시 를 만 들 지 않 고 탐색 할 때마다 데 이 터 를 업데이트 할 수 있 습 니 다.예 를 들 어 웹 페이지 는 사용자 의 상태,웹 페이지 의 통계 데이터,광고 바 등 을 표시 합 니 다.이런 데이터 의 업데이트 속도 가 매우 빠 르 고 캐 시 에 적합 하지 않 습 니 다.그러면 국부 캐 시 는 쓸모 가 있 습 니 다.부분 캐 시 는 세 가지 방법 이 있 습 니 다.첫째,insert 법 insert 에 포 함 된 내용 은 캐 시 되 지 않 습 니 다.이 템 플 릿 을 호출 할 때마다 이 함 수 를 다시 실행 합 니 다.사용 방법:이 함수 이름 은 insert 로 시작 해 야 합 니 다.템 플 릿 의 name 과 대응 해 야 합 니 다.index.php
if(!$smarty->isCached('index.tpl')){
echo "ACACHE NO FOUND!";
$sql = "SELECT * FROM test";
$query = mysql_query($sql);
$row = mysql_fetch_row($query);
$smarty->assign("loaddatabase",$row[1]);
}
index.tpl
// insert assign
$date = date("Y-m-d H:i:s");
$smarty->assign("date", $date);
//insert
function insert_get_current_time($date){
return date("Y-m-d H:i:s");
}
nocache: cache:2012-06-04 15:46:52
nocache:{insert name="get_current_time"}
cache: {$date}
[code]
: insert
처음에 언급 했 듯 이 Smarty 3 는 registerPlugin,Smarty 2 는 registerblock index.tpl{nocache}{$date}{/nocache}그리고 캐 시 파일 을 보고 이 템 플 릿 을 호출 할 때마다$date[/code]tpl_vars['date']->value;?>
, , 。
、 block
php
index.php
[code]
//smarty 3
// function declaration
function smarty_block_nocache ($param,$content,$smarty)
{
return $content;
}
// register with smarty
$smarty->registerPlugin("function","nocache", "smarty_block_nocache");
[code]tpl 템 플 릿 의 사용 은 두 번 째 방법 과 마찬가지 로 Smarty 캐 시 기술 을 정리 하면 사이트 의 속도 와 질 을 크게 향상 시 킬 수 있 고 용법 도 간단 합 니 다.마지막 으로 스마트 가 생 성 한 캐 시 파일 의 확장 자 는 php 이지 만 php 코드 로 해석 되 지 않 습 니 다.작성 자:그 순간