>  기사  >  백엔드 개발  >  PHP 템플릿 엔진 Smarty 캐시 사용

PHP 템플릿 엔진 Smarty 캐시 사용

WBOY
WBOY원래의
2016-07-25 08:53:28846검색
  1. $smarty->display('index.tpl',$my_cache_id);
코드 복사

이 기능은 다양한 $_GET을 다르게 캐시하는 데 사용할 수 있습니다.

2. 스마트 캐시 지우기 일반적으로 스마트 캐시를 지우는 방법에는 여러 가지가 있습니다.

  1. clear_all_cache();//모든 캐시 지우기
  2. clear_cache('index.tpl');//지정된 템플릿 인덱스의 캐시를 지웁니다. tpl
  3. clear_cache('index.tpl',cache_id);//지정된 ID로 지정된 템플릿의 캐시 지우기
코드 복사

3. 글로벌 캐시 글로벌 캐싱은 전체 웹사이트의 모든 페이지에 대해 캐시된 페이지를 생성하는 것입니다. 글로벌 캐시를 설정하려면 먼저 smarty 구성 파일을 작동하고, 캐시를 활성화하고, 캐시 파일 디렉터리를 지정하고, 캐시 생존 시간을 설정해야 합니다. 설정 매개변수는 다음과 같습니다. $smarty->cache_dir='./cache/'; //캐시 파일을 저장할 폴더를 설정합니다. $smarty->caching=1;//캐싱 켜기 0, FALSE는 꺼짐을 의미합니다. 0이 아닌 숫자, TRUE는 켜짐을 의미합니다. $smarty->cache_lifetime=3600//단위는 초입니다(-1을 입력하면 절대 만료되지 않습니다) 다음으로, 특정 PHP 페이지로 이동하여 해당하는 특정 캐시 파일의 이름을 설정해야 합니다. PHP 페이지에서는 다음과 같이 작성할 수 있습니다.

  1. $smarty->display('list2.html',md5($_SERVER['REQUEST_URI']));//URL 변경 현재 페이지 (? 이후의 모든 매개변수 포함) md5 암호화를 수행한 후 캐시 파일 이름을 설정하십시오.
코드 복사

참고: $smarty->display('해당 템플릿 파일명', '캐시 파일명의 보조 부분') 이 방법을 사용하세요.

두 번째 매개변수는 필수가 아닙니다. 작성하지 않을 경우 캐시 파일명은 템플릿 파일명의 암호화된 파일입니다. 그러나 이렇게 하면 다음과 같은 더 어려운 문제에 직면하게 됩니다. http://bbs.it-home.org/article.php?id=5 http://bbs.it-home.org/article.php?id=7 이 두 URL은 서로 다른 내용에 해당하지만 생성된 캐시 파일 이름은 기사 암호화의 결과입니다. 이로 인해 사용자는 다른 콘텐츠를 쿼리하지만 동일한 캐시 파일에 액세스하게 됩니다. 따라서 보조 매개변수를 추가하는 것이 액세스 URL(? 이후의 모든 매개변수 포함) md5를 암호화하는 것이 보다 안정적인 방법입니다.

4. 부분 캐싱 부분 캐싱이란 웹 사이트의 모든 파일이 아닌 일부 파일을 지정하여 캐시 파일을 생성하는 것을 의미합니다. 부분 캐싱의 본질은 실제로 부분 비캐싱입니다. 즉, 어떤 파일을 캐시해야 하는지 지정하는 것이 아니라 특정 파일을 캐시하지 않도록 지정하는 것입니다. 이제 3개의 파일이 있다고 가정합니다. http://bbs.it-home.org/index.php //캐싱 필요 http://bbs.it-home.org/cate.php //캐싱 필요 http://bbs.it-home.org/article.php //캐싱이 필요하지 않습니다. $smarty->display('해당 템플릿 파일 이름', '캐시 파일 이름의 보충 부분') 문장은 여전히 ​​처음 두 파일의 PHP 파일에 작성되어야 합니다. 그러나 세 번째 파일에서는 캐시가 필요하지 않음을 구체적으로 지정해야 합니다. 구체적인 방법은 지정된 템플릿을 표시하기 전에 다음 코드를 작성하는 것입니다. $smarty->clear_cache('해당 템플릿 파일 이름');//사실 $smarty->display('해당 템플릿 파일 이름') 앞이나 뒤에 쓸 수 있습니다. 물론 $smarty->display('corresponding template file name') 은 아직 작성해야 하므로 캐시를 생성하고 싶지 않으므로 두 번째 매개변수는 필요하지 않습니다. 참고: $smarty->clear_cache() 및 $smarty->display()의 매개변수는 일관되게 작성되어야 합니다

5. 부분 캐싱 부분 캐싱은 동일한 페이지 아래의 특정 로컬 위치를 지정하여 캐시를 생성하는 것입니다. 실제로 어떤 부분이 캐시를 생성하는지 명시하지 않고, 어떤 부분이 캐시를 생성하지 않는지를 명시하고 있다(이는 부분 캐시의 동작 아이디어와 유사하다). 먼저 다음 예를 살펴보겠습니다. Article.php 파일의 일부:

  1. $time=time();
  2. $smarty->sign('time',$lanmuarr);
  3. function insert_timeget(){
  4. 반환 시간();
  5. }
  6. $smarty->display('article.html');
복사

코드는 템플릿 파일 article.html의 코드 일부에 해당합니다.

  1. {$time}
  2. {insert name='timeget'}
코드 복사

다음은 위 예에 대한 설명입니다. PHP에서는 사용자 정의 추가 이름을 사용하여 insert_(밑줄 참고)라는 사용자 정의 함수만 정의하면 반환된 값은 할당()에 의해 전달될 필요가 없습니다. 메소드는 {삽입 이름='맞춤 보충 이름'}으로 템플릿 페이지에서 직접 호출할 수 있으며, 동시에 캐시의 영향을 받지 않고 실시간으로 새로 고쳐집니다.

Smarty 캐시를 사용하는 것만으로는 충분하지 않다고 생각되면 맞춤 캐시를 사용할 수도 있습니다.

캐시를 처리하는 사용자 정의 함수를 사용하려면 다음과 같이 캐시_handler_func를 설정해야 합니다.

  1. $smarty->cache_handler_func="myCache";
  2. function myCache($action,&$smarty_obj,&$cache_content,$tpl_file=null ,$cache_id=null,$compile_id=null){
  3. switch($action){
  4. case "read"://캐시 내용 읽기
  5. case "write"://write 캐시
  6. case "clear"://clear
  7. }
  8. }
코드 복사


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