DokuWiki는 파싱된 파일들을 캐쉬(cache)로 저장함으로써 브라우징 속도를 높입니다.1). 만일 현재 캐쉬된 문서가 있다면 다시 데이타를 파싱하지 않고 캐쉬된 복사본을 대신 보여줍니다. 편집과 미리보기에서는 캐쉬되지 않은 문서를 사용합니다.
강제로 한 페이지를 다시 캐쉬하려면 URL인자로 purge를 추가하면 됩니다.
예:
http://www.example.com/namespace/page?purge=true
페이지 명령들을 포함해서, 모든 페이지를 다시 캐쉬하려면, touch2)명령어를 사용해 local 환경설정 파일 conf/local.php의 최종 수정시간을 바꾸면 됩니다.
강제로 xhtml페이지를 다시 캐쉬하려면, touch inc/parser/xhtml.php.
DokuWiki는 페이지마다 2개의 캐쉬파일을 사용합니다. 이 것을 이해하려면 페이지가 XHTML로 변환되기 전에 중간 명령어(intermediate instruction)코드의 형태로 파싱된다는 것을 알아야합니다. DokuWiki는 이 중간 코드물과 변환된 XHTML 두가지 모두 캐쉬합니다.
XHTML과 instruction 캐쉬는 data/cache/*6)에 위치합니다. .xhtml, .i로 끝나는 화일들과 아래의 파일들 역시 캐쉬 디렉토리에 저장됩니다:
.feed — wiki가 생성한 rss feeds 파일들 .code — 페이지에서 문법강조(highlighting)부분이 적용된 <code> ... </code>태그 사이 영역.
플러그인는 PARSER_CACHE_USE 이벤트를 통해 캐쉬 사용에 영향을 줄 수 있습니다. 이 것은 특별한 페이지들에 의존적인 플러그인들이 그 의존성들을 검사하고 강제로 DokuWiki가 정상적으로 페이지가 보이지 않을 때 재처리하는 것을 허용합니다.
지금까지 플러그인 개발자들은 단지 캐쉬 기능을 완전히 비활성하는 것만 가능했습니다. 캐쉬를 사용하지 않는 것은 discussion과 include같은 플러그인들에게 필요했습니다. 문법 플러그인의 새로운 기능을 사용하기 위해서:
$INFO['metadata'] , p_get_metadata(), p_set_metadata()함수를 통해 접근할 수 있습니다. 만일 메타 데이타를 사용한다면 Dublin Core Metadata 표준을 준수하기 바랍니다.PARSER_CACHE_USE 이벤트를 처리하기 위해 Action 플러그인 컴포너트를 추가해야 합니다.캐슁 자체는 cache object7)에 의해 처리됩니다. 플러그인과 관련해 흥미로운 캐쉬오브젝트의 중요 부분은 다음과 같습니다:
depends배열 — DokuWiki는 이 배열을 페이지의 알려진 의존 하는 것들로 채우고 나서 표준 루틴들이 접근하는 그들에게 접근하는 용도로 사용합니다. 플러그인은 그들을 처리하기에 추가/수정이 가능합니다. 의존하는 것들의 형태는 다음과 같습니다.purge — 다시 캐쉬age — 캐쉬 유지 시간을 초과하는 경우 다시 캐쉬files — 이 배열의 파일들보다 오래되었다면 다시 캐쉬. 단지 local 파일들만 추가될지 모릅니다.cache — 캐쉬가 저장되었을 때 구별하기 위한 유일한(unique) 식별자.
보통 페이지 이름, HTTP_HOST, 서버 port번호에 의존적입니다. 플러그인들은 좀 더 복잡한 식별자를 생성할 수 있습니다. 예를 들어 inclue 플러그인은 포함된 페이지 이름들과 현 사용자가 이 페이지들에 읽기 권한을 가졌는지 여부를 사용하여 식별자를 만들어 냅니다.
이것은 꽤 다른 형태의 캐쉬를 요구합니다. - 단지 위키 페이지외에도 전체 페이지들이 캐쉬될 필요가 있을 때 유용합니다.
서버는 확실하게 페이지가 캐쉬로부터 가져올 수 있는지를 알아야합니다. 서버쪽에서 포함되지 않고서는 이 것을 수행할 어떤 방법도 없습니다. DokuWiki가 이 것을 효율적으로 처리하고 있습니다. 브라우저가 페이지를 요구하는 순간, DokuWiki는 캐쉬 복사본인 유효하지 검사합니다. 만일 복사복이 유효하다면 원본 대신 복사본을 보냅니다. — Christopher Smith 2006-09-26 00:35
english version: dokuwiki-2006-11-06.
Add your email here if you created translated or modified whole or part of this page.