[첫화면으로]UseModWiki소스수정/redirect와cache

마지막으로 [b]

변경사항 (가장 최근의 "일반적인 수정"부터) (소소한 수정)

-6,8 +6,8
** 굳이 단점을 찾아본다면, a 페이지에 대한 cache miss 가 딱 한 번 더 발생한다는 것이다. a 의 캐쉬화일이 없는 상태에서, 사용자가 b, b, a, b, a 의 순으로 페이지를 열람했다고 한다면, 기존 코드에서는 첫번째 b 를 열람한 시점에서 a 의 캐쉬가 생성되고, 세번째와 다섯번째에 a 를 열람할 때는 그 캐쉬된 데이타를 볼 수 있다. (문제는 그 캐쉬 데이타가 올바르지 않다는 점이다. 즉 상단에 대문짝만하게 "b 로부터 이동했음" 이라고 나올 것이다. 설령 a, b, a 의 순으로 열람했다 하더라도, 첫번째 a 열람시에는 제대로 나오고 캐쉬도 제대로 생성이 되지만, 두번째 b 를 열람할 때 캐쉬가 갱신되기 때문에 세번째 이후에는 잘못된 출력이 나온다.)
** 아래 패치를 적용할 경우, b b a b a 의 경우, 캐쉬 데이타는 세 번째에 a 를 열람할 때가 되어야 생성된다. 즉 세번째 a 는 좀 느리게 출력된다. 하지만 다섯번째를 비롯해서 그 이후 a 페이지를 열람할 때는 제대로 된 캐쉬 화일을 사용할 수 있다.
: 서론이 매우 길었는데, 정작 수정할 부분은 너무도 간단하다.
{{{perl
sub DoBrowseRequest {
{{{#!vim perl
sub BrowsePage {
    ...
    return  if ($showDiff || ($revision ne ''));  # Don't cache special version
### 다음 라인의 if 구문에 조건 하나만 더 추가해주면 된다.

-21,5 +21,7
== Notes ==
아! 예전에 소스 수정하면서 안건데, 혹시 DoBrowseRequest 함수가 아닌, BrowsePage함수(..가 맞나?; )를 수정해줘야 하는거 아닌가요? 전에 제가 수정하였던 소스는 그렇던데... <mysign([[무아]],2003-9-15 12:18 am)>
: 어머나 세상에.. ^^; 말씀하신 그대로입니다. 함수가 긴데 수정한 부분이 꽤 아래쪽이라.. 위로 올라가다가 함수이름을 건너뛰었나보네요. 고쳤습니다. 감사합니다~ <mysign([[Raymundo]],2003-9-15 12:22 am)>
----
[[위키위키분류]]


REDIRECT 되는 페이지의 캐쉬 화일 문제 해결

서론이 매우 길었는데, 정작 수정할 부분은 너무도 간단하다.
sub BrowsePage {
    ...
    return  if ($showDiff || ($revision ne ''));  # Don't cache special version
### 다음 라인의 if 구문에 조건 하나만 더 추가해주면 된다.
#   &UpdateHtmlCache($id, $fullHtml)  if $UseCache;
    &UpdateHtmlCache($id, $fullHtml)  if ($UseCache && ($oldId eq ''));
###
}

Notes

아! 예전에 소스 수정하면서 안건데, 혹시 DoBrowseRequest 함수가 아닌, BrowsePage함수(..가 맞나?; )를 수정해줘야 하는거 아닌가요? 전에 제가 수정하였던 소스는 그렇던데...
-- 무아 2003-9-15 12:18 am

어머나 세상에.. ^^; 말씀하신 그대로입니다. 함수가 긴데 수정한 부분이 꽤 아래쪽이라.. 위로 올라가다가 함수이름을 건너뛰었나보네요. 고쳤습니다. 감사합니다~
-- Raymundo 2003-9-15 12:22 am


위키위키분류

마지막 편집일: 2007-1-8 12:19 pm (변경사항 [d])
1037 hits | Permalink | 변경내역 보기 [h] | 페이지 소스 보기