2010-12-27 5 views
2

사용자가 이미지를 저장하고 공유 할 수있는 응용 프로그램을 유지 관리합니다. 이 시스템은 백엔드에서 MongoDB에 의해 구동됩니다. 대부분의 이미지 묘사 페이지는 플랫 HTML 파일로 캐시되지만 파일을로드하기 직전에 일부 코드를 실행할 수 있습니다.개체의보기 개수를 저장하는 효율적인 방법은 무엇입니까?

시스템의 조회수를 구현하기로 결정했습니다. 나는 그것을 위해 최고의 저장 장소가 무엇인지 궁금하다. Memcached와 같아야하지만 매시간마다 조회수를 저장해야하므로 서버를 다시 시작해야한다고해도 조회수가 줄어들지는 않습니다.

무엇이 가장 좋은 해결책입니까 (PHP 확장을 클라이언트로 사용하는 것이 좋음)?

답변

0

캐쉬 된 플랫 HTML 파일의 조회수는 얼마입니까? 왜 파일의 시작 부분에 코드를 저장하지 않습니까? 파일을 볼 때 꺼낼 수 있습니다 ...

+0

조회수는 PHP에서 JS 변수로 HTML 파일 앞에 붙입니다. 그런 다음 Javascript가 올바른 위치에 놓습니다. 그리고, 당신이 제안하는 것은 효율적이지 않습니다. –

0

한 번 memcached에 뷰 수를 저장 한 다음 뷰 수에 따라 임의의 간격으로 데이터베이스를 업데이트하여이 문제를 해결했습니다. 데이터베이스에 저장할 확률은 1/sqrt (보기 수)입니다. 이것은 좋은 속성을했습니다. 뷰의 수가 4와 같이 작 으면 데이터베이스에 쓸 확률은 1/2입니다. 객체의 뷰 수가 1,000,000 개라고하면 그 확률은 1/1000이됩니다. 그것은 잘 작동하는 것 같았다.

0

실시간 보고서/통계가 필요하지 않은 경우 매일 아파치 로그를 구문 분석하고 일치 개수를 데이터베이스 또는 플랫 파일 형식으로 저장해야합니다.

이점?

  1. 는 기존의 응용 프로그램을 끼치 지 않습니다
  2. 추가적인 memcache에 필요하지 않은 정도
  3. 는 (하루에 한 번)
  4. 복구
매일 로그 아파치를 구문 분석 할 필요가

물론 이것은 정기적으로 cronjob을 설정하여 데이터베이스를 읽거나 업데이트하는 것을 막지는 않습니다. (보다 자세한 조회수의 경우)

관련 문제