-6,7 +6,7 |
** 굳이 단점을 찾아본다면, 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 |
{{{#!vim perl |
sub BrowsePage { |
... |
return if ($showDiff || ($revision ne '')); # Don't cache special version |
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 '')); ### }