2009-09-26 2 views
0

웹 응용 프로그램이 하나 이상의 페이지에 대한 방문 횟수 카운터를 유지하고 익명 방문객을 위해 해당 페이지를 적극적으로 캐시한다고 가정 해보십시오. 이는 히트 카운트가 해당 방문자에 대해서도 서버에서 정확하게 관리 되기는하지만 히트 카운트가 해당 방문자의 구식이 될 수 없다는 문제를 야기합니다.비 영구적 인 HTTP 쿠키를 사용하여 대역 외 데이터를 브라우저에 전달

서버가 캐시 된 페이지를 계속 제공하지만 업데이트 된 카운터를 DOM에 삽입하는 페이지의 자바 스크립트로 읽을 수있는 비 영구적 인 http 쿠키의 업데이트 된 카운터를 전달하면 어떻게 될까요?

의견?

+0

누군가 쿠키를 사용하지 않도록 설정 한 경우 ... 비 지속적 쿠키가 들어올 수도 있습니까? – Toad

+0

확실하지 않습니다. 그러나 그들이 그렇지 않더라도 부정적인 영향은 시대에 뒤진 공격 횟수를 보는 것에 국한 될 것입니다. –

+0

사실, 쿠키가 발견되지 않으면 표시되는 자바 스크립트 코드의 기본값이있는 경우에만 – Toad

답변

1

이런 식으로 방문자를 추적하지 않습니다. 페이지를 적극적으로 캐싱하는 경우 중간 프록시와 브라우저에서 페이지를 캐시합니다. 따라서 요청을 추적하여 서버에 도달하지 못할 수도 있습니다.

이렇게하는 가장 좋은 방법은 Google Analytics와 유사한 접근 방식을 사용하는 것입니다. 페이지가로드되면 서버에 AJAX 요청을 보냅니다. 이 ajax 요청은 서버의 현재 카운터 값을 증가시키고 최신 값을 리턴합니다. 그런 다음 클라이언트 측에서 javascript를 사용하여 서버가 반환 한 값을 표시 할 수 있습니다.

이 방법을 사용하면 방문자를 추적 할 수있는 능력을 잃지 않고 원하는만큼 적극적으로 캐시 할 수 있습니다.

+0

그래, 그게 아마도 가장 좋은 해결책이라고 생각해. –

0

또한 프로그래밍 방식으로 페이지를 ASP 또는 PHP를 통해 캐시에서 직접 가져 와서 히트 카운터를 교체 할 수 있습니다.

+0

캐시 된 내용에 스마트하고 (잠재적으로 결함이있는) 정규식 매직을 적용한다는 것을 의미합니까? –

+0

정규식은 약간 위에 보인다. 바꾸기가 필요한 텍스트가 다음과 같이 정의 된 경우 : %% COUNTER %% 그러면 간단한 검색을 수행하고 바꿀 수 있습니다. – Toad

+0

그러나 이것은 여전히 ​​서버에 부담을 줄 것입니다. 문자열을 교체하는 것은 번개가 빠르지 만 여전히 서버에서 작동합니다. –

관련 문제