최근 웹 사이트에서 작업 중이며 응용 프로그램의 속도를 높이고 싶습니다. 사용자의 페이지를 캐싱하고 싶지만 다른 사용자가 새 피드를 게시하면 해당 새 피드로 홈페이지가 업데이트되는 것처럼 페이지가 동적입니다. 한 사용자의 홈페이지와 그의 친구의 친구가 새로운 피드를 캐시하면 해당 캐시가 만료되고 다음 번에 홈페이지를 다시 방문 할 때 응용 프로그램이 데이터베이스에 접속하여 새 피드를 가져 와서 캐시합니다.Memcached로 PHP 응용 프로그램의 속도를 높이는 방법
저는 내 DB에 memcache와 PHP 및 MySQL을 사용하고 있습니다. friends
, feeds
및 users
이라는 테이블이 있습니다.
모든 사용자의 친구를 캐시하는 것이 효율적일 수 있으며 해당 사용자가 피드를 게시하면 내 앱이 친구를 가져오고 사용자 ID로 알림을 캐시하므로 친구 로그인 앱이 로그인 할 때 모든 페이지에서 액션 (이 경우 캐시에서 홈페이지 삭제)을 취하는 알림입니다.
감사합니다, 있습니다 END_STRONG_1
글쎄, 내 경우에는 내가 생각하기에 그다지 문제가되지 않도록 모든 페이지에 거의 친구 목록을 가져와야한다. 그러나 당신이 맞다면, 전체 페이지를 캐시하는 것이 현명하지는 않습니다. 귀하의 답변에 감사드립니다. –
글쎄, 얼마나 많은 친구들이 우리 얘기하는거야? 수천? 백만? 쿼리에는 몇 개의 조인이 들어 있습니까? WHERE 절에 몇 개의 열이 표시됩니까? 몇 줄의 코드로 가난한 사람의 쿼리 로그를 만들 수 있습니다 (xdebug보다 더 가벼운 접근 방법이며, * 어떤 쿼리가 다른 쿼리보다 오래 걸릴지를 알려줄 수 있습니다). – Joey
우리는 1000 p/u로 제한하고 있기 때문에 사용자 당 평균 500 명의 친구에 대해 이야기하고 있습니다. 지금 나는 32GB의 램을 가진 4 개의 3.6GHZ 8core PC를 갖고 있습니다.나는 테이블에서 친구를 찾는 데 조인을 사용하지 않습니다. 먼저 'uid1 = (user_id) AND active = 1'을 선택한 친구와'uid1 = (user_id) AND active = 1' 친구를 찾은 다음 데이터베이스로 두 번째로 가서 'users' 테이블에서 친구들을 검색하고 객체를 인스턴스화합니다. –