DokuWiki

It's better when it's simple

사용자 도구

사이트 도구


ko:caching

캐쉬하기

DokuWiki는 분석(parse)된 파일들을 캐쉬(cache)로 저장함으로써 브라우징 속도를 높입니다.1). 만일 현재 캐쉬된 문서가 있다면 다시 데이타를 파싱하지 않고 캐쉬된 복사본을 대신 보여줍니다. 편집과 미리보기에서는 캐쉬되지 않은 문서를 사용합니다.

캐쉬 다시 생성

강제로 한 페이지를 다시 캐쉬하려면 URL인자로 purge를 추가하면 됩니다.

예:

http://www.example.com/namespace/page?purge=true

페이지 명령들을 포함해서, 모든 페이지를 다시 캐쉬하려면, touch2)명령어를 사용해 local 환경설정 파일 conf/local.php의 최종 수정시간을 바꾸면 됩니다.

강제로 xhtml페이지를 다시 캐쉬하려면, touch inc/parser/xhtml.php.

2단계 캐슁

DokuWiki는 페이지마다 2개의 캐쉬파일을 사용합니다. 이 것을 이해하려면 페이지가 XHTML로 변환되기 전에 중간 명령어(intermediate instruction)코드의 형태로 파싱된다는 것을 알아야합니다. DokuWiki는 이 중간 코드물과 변환된 XHTML 두가지 모두 캐쉬합니다.

  • Instruction 캐쉬
    instruction 캐쉬 파일은 페이지, 환경설정 파일들3), 몇 몇 DokuWiki PHP 파일들4)이 변경되거나 플러그인 매니저를 사용하여 플러그인들이 추가/삭제/활성화/비활성화되는 경우에만 다시 변경됩니다.
  • XHTML Cache
    The XHTML 캐쉬 파일은 단지 최대 캐쉬 생존 시간(cachetime옵션 참조), XHTML 파일의 메타 데이타, PHP 파일들 5), 내부 링크의 존재 상태 변화시(즉 링크 타겟 페이지가 생성되거나 삭제될 떄를 의미), RSS feed가 다시 만들어 질 필요가 있을 때에만 영향을 받습니다.

위치

XHTML과 instruction 캐쉬는 data/cache/*6)에 위치합니다. .xhtml, .i로 끝나는 화일들과 아래의 파일들 역시 캐쉬 디렉토리에 저장됩니다:

  • .feed — wiki가 생성한 rss feeds 파일들
  • .code — 페이지에서 문법강조(highlighting)부분이 적용된 <code> ... </code>태그 사이 영역.

확장 기능

플러그인PARSER_CACHE_USE 이벤트를 통해 캐쉬 사용에 영향을 줄 수 있습니다. 이 것은 특별한 페이지들에 의존적인 플러그인들이 그 의존성들을 검사하고 강제로 DokuWiki가 정상적으로 페이지가 보이지 않을 때 재처리하는 것을 허용합니다.

개발자 노트

지금까지 플러그인 개발자들은 단지 캐쉬 기능을 완전히 비활성하는 것만 가능했습니다. 캐쉬를 사용하지 않는 것은 discussioninclude같은 플러그인들에게 필요했습니다. 문법 플러그인의 새로운 기능을 사용하기 위해서:

  • 플러그인에 포함된 페이지들과 각 페이지들에 의존적인 관련 정보들을 저장해야합니다. 페이지의 metadata는 이런 정보들을 위한 장소입니다. 메타 데이타는 $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 플러그인은 포함된 페이지 이름들과 현 사용자가 이 페이지들에 읽기 권한을 가졌는지 여부를 사용하여 식별자를 만들어 냅니다.

캐쉬 성능 개선

  • 서버 부하를 줄이기 위해, 모든 링크를 직접 캐쉬 디렉토리로 대조(mapping)합니다. 페이지가 캐쉬에서 빠졌을 때 위키 엔진으로 다시 넘겨 주는 ErrorDocument를 가지고 있어야 합니다.
이것은 꽤 다른 형태의 캐쉬를 요구합니다. - 단지 위키 페이지외에도 전체 페이지들이 캐쉬될 필요가 있을 때 유용합니다.
  • 지금, 누군가 만일 원래 위치 대신 위키 엔진에서 가져와야 하는 html캐쉬로부터 유효 시간이 끝난 페이지의 http 응답 헤더 정보를 포함하는 방법에 대해 좋은 아이디어가 있으면, 서버쪽에서 검사하지 않고 캐쉬에 있는 이전 페이지들을 역시 확실하게 사용하지 않도록 합니다.
서버는 확실하게 페이지가 캐쉬로부터 가져올 수 있는지를 알아야합니다. 서버쪽에서 포함되지 않고서는 이 것을 수행할 어떤 방법도 없습니다. 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.

  • jk Lee - real mail domain is gmail, not zoo.com for spam filtering 2007-2-7 created
2)
비UNIX사용자들은 파일을 열고 나서 다시 저장합니다. – 파일 수정 시간을 바꾸기 위한 아이디어
3)
conf/dokuwiki.phpconf/local.php
4)
inc/parser/parser.phpinc/parser/handler.php
5)
inc/parser/xhtmlinc/parser/metadata
6)
* –단일문자로 이루어진 디렉토리 이름,
datasavedir옵션으로 변경
7)
inc/cache.php
ko/caching.txt · 마지막으로 수정됨: 2011-05-08 07:07 저자 180.228.159.61

별도로 명시하지 않을 경우, 이 위키의 내용은 다음 라이선스에 따라 사용할 수 있습니다: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki