2011-08-03 3 views
0

나는 사용자의 게시물을 보여주는 레일 앱이 있습니다. 사용자 게시물은 여러 가지 방법으로 정렬되고, 페이지가 매겨지며 분류 될 수 있습니다. 이러한 모든 클릭은 아약스를 통해 수행됩니다.레일 캐싱 + 아약스

그러나 카테고리 나 sortby 매개 변수 또는 새 페이지를 클릭 할 때마다 ENTIRE 요청을 다시로드 한 다음 지정된 방식으로 반환합니다. 첫 번째 결과를 캐싱 할 수있는 방법이 있습니까? 그런 다음 정렬, 매김 및 분류 작업을 빠르게 수행 할 수 있습니까?

+0

귀하의 의견과 컨트롤러는 어떻게 생겼습니까? 나는 우리가 그것들을 본다면 대답을 얻는 것이 훨씬 더 빠를 것이라고 생각합니다. 또한, "전체"요청이란 무엇입니까? 비효율적 인 쿼리 또는 페이지 렌더링을 수행하는 SQL입니까? –

+0

우리는 위치, 업계, 프로필에 설정된 특정 환경 설정 등을 비롯한 많은 기준에 기반한 고객을위한 고급 일치 기법을 수행합니다. 또한 각 일치 항목에 점수를주는 알고리즘을 수행합니다. 새로운 매개 변수가로드 될 때마다이 모든 작업을 수행합니다 (예 :'? page = 2'). 기본적으로 스코어링이 모델에서 이루어지는 동안 모든 쿼리가 컨트롤러에서 발생합니다. – stewart715

+0

레일 캐싱 가이드를 잘 읽었습니까? http://guides.rubyonrails.org/caching_with_rails.html 여러분의 페이지를 구성하는 SQL과 파편의 일부를 캐시 할 수있는 것처럼 보입니다. –

답변

0

성능을 향상 시키려면 memcache를 사용하는 것이 가장 좋습니다. memcache가 설치되어 레일즈 앱에 구현되어 있다면, 실제로 데이터베이스에 다시 쿼리하지 않고 특정 기간 동안 해당 쿼리를 캐시 할 수 있습니다. 대신 메모리에서 직접 가져 오므로 성능이 크게 향상됩니다. https://github.com/nkallen/cache-money을 확인하시기 바랍니다.

+0

쿼리를 캐싱하고 해당 쿼리에 대해 많은 조작을 캐시하는 것은 어떨까요? 그게 가능하니? – stewart715

0

이것은 AJAX와 비 AJAX 자바 스크립트 구현을 사용하는 문제입니다.

Ajax를 사용할 때 질문해야 할 질문은 서버에서 더 많은 정보 또는 로직이 필요합니까? 대답이 "아니오"이고 클라이언트 브라우저에 이미로드 한 정보 만 사용하여 수행 할 수있는 경우 Javascript를 사용하여 시도하고 구현해야합니다.

이 경우에는 자바 스크립트 정렬을위한 솔루션이 많이 있습니다. 예를 들어 간단한 표와 같은 정렬 (테이블이 보이지 않을 수 있음)을 원할 경우이 플러그인과 같은 것을 사용할 수 있습니다. http://yoast.com/articles/sortable-table/

더 많은 맞춤 솔루션을 원한다면 직접 자바 스크립트를 작성할 수 있습니다 ,이 게시물 : Sort <div> elements using jQuery 좋은 출발점을 제공합니다.

희망 하시겠습니까?