2009-02-05 6 views
3

특정 페이지에 수신되는 조회수 (및 dzone.com에서의 클릭 수)가 점점 더 많아지고 있습니다. 모든 부하에 데이터베이스를 치지 않고 뷰 #를 추적하는 가장 좋은 방법은 무엇입니까?항상 데이터베이스를 치지 않고 한 페이지에 # 개의보기 표시

나는 내 머리 속에서 이것을하는 방법에 대한 잠재적 아이디어를 가지고 있지만 그 중 누구도 실행 가능한 것처럼 보이지 않습니다.

고마워, 처음으로 사용자.

답변

0

히트 수를 가진 플랫 파일을 설정할 수 있습니다. 이것은 문제의 규모를 조정할 수 있지만 작동 할 수 있습니다.

페이지 뷰 수를 표시하는 데 신경 쓰지 않으면 google analytics 또는 piwik과 같은 것을 사용할 수 있습니다. 두 페이지 모두 페이지가 이미로드 된 후에 요청하므로로드 시간에 영향을 미치지 않습니다. 분석 서버에 대한 ajax 요청을하는 방법이있을 수 있지만 확실하지는 않습니다. Piwik은 오픈 소스이기 때문에 함께 해킹 할 수 있습니다.

+0

예 우리는 확장 할 수있는 무언가를 찾고 있습니다. 아마도 파일이 없습니다. 잠금에 문제가 있거나 없을 수 있습니다. Analytics 소프트웨어가 내가 찾고있는 것이 아니기 때문에 번호를 표시하려고합니다. 물론 로컬 분석 소프트웨어는이 작업을 수행 할 수 있지만 데이터베이스에 저장하기 때문에 모든 페이지 뷰에서 데이터베이스에 쓰는 문제가 해결되지 않는 느린 – PStamatiou

3

데이터베이스 접근 방식을 먼저 시도해보십시오. 자동 증가 카운터의 값을 반환하는 것은 상당히 저렴한 조작이어야하므로 놀랄 수 있습니다. 히트 카운트를 기록 할 많은 항목의 테이블을 유지하는 것조차도 상당히 효과적이어야합니다.

하지만 질문은 모든 호출에 대해 db를 치는 것을 피하는 방법이었습니다. 나는 webapp에 테이블을로드하고 거기에 그것을 증분하는 것이 좋습니다, 오직 DB를 주기적으로 또는 webapp 종료에 백업.

-1

서버 측 스크립팅을 사용하는 경우 변수에서 증가 시키십시오. 정확도가 필요한 경우 서비스를 다시 시작하면 재설정하는 것이 좋습니다.

2

값싼 트릭은 값을 몇 분만 캐시하는 것입니다.

뷰의 정확한 수는 바쁜 사이트에 방문자가 페이지를 통해가는 시간에, 새로운 뷰의 전체 배치는 이미 이후입니다별로 중요하지 어쨌든 않습니다.

+0

일 수 있습니다. –

1

한 가지 방법이다 memcached을 카운터로 사용하십시오. this rate limit implementation을 수정하여 대신 일반 카운터로 사용할 수 있습니다. 키는 yyyymmddhhmm 형식으로 만료일이 15 또는 30 분 (동시 방문자로 간주되는 항목에 따라 다름)이며 페이지를 표시 할 때 해당 키는 간단히 get입니다.

memcache 서버와 통신하기위한 멋진 라이브러리는 many languages에서 사용할 수 있습니다.