-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)> |
---- |
[[위키위키분류]] |
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 '')); ### }