2010-02-05 3 views
1

글쎄, 실제로 재발 명하지는 않지만 우리는 콘텐츠 기반 웹 사이트에서 SQL 풀링 문제를 해결 한 후 특정 지점까지로드를 처리 한 다음 스팸이 거의 소모됩니다. 많은 것은 우리가 고치려고하는 나쁜 코드로 인해 발생하지만 많은 것은 요청 수준 등 때문일뿐입니다.하이브리드 레일 캐싱 옵션, 뭔가 재발견 중입니까?

우리는 페이지 캐싱을 고려하고있었습니다. : D) 그러나 우리는 로그인 한 사용자에 특정한 페이지 내의 특정 조각을 가지고 있기 때문에 작동하지 않습니다. 컨텐츠가 업데이트 될 때 페이지를 청소하는 청소부로,

  1. 페이지 레벨 캐싱 :하지만, 모든 희망은 (는) 다음을 수행하는 것이 이상적 경우

    가 궁금 해서요 ... 손실됩니다.

  2. 자리 표시 자로 대체하십시오 (예 : '계정보기 또는 여기에서 가입'과 같은 일반적인 내용)
  3. 사용자 페이지가 비동기 요청 (AJAX 또는 'AJAH'라고 부름). '동적'조각을 요청한 다음 콘텐츠 단편을이 조각으로 배치합니다.

내가 볼 수있는 주요 문제는 JS가 꺼진 사용자는 콘텐츠,하지만 나는 솔직히 우리가 너무 이것에 영향을받을 것이라고 생각하지 않습니다, 그리고 자바 스크립트를 비활성화 IMHO 사람들은, 대부분은 바보 (예, 내가 그것을 말했다!).

나는 또한 (나는 의심의 여지가) 뭔가를 재발 명하고, 누군가가 이미 이런 식으로 뭔가를하고있는 사이트에 나를 가리킬 수 있다면 관심을 가질 것이다.

감사합니다. SO 커뮤니티!

답변

3

Ryan Bates이 기술을 Railscast 169: Dynamic Page Caching에 적용했습니다. 살펴볼 가치가 있습니다.

+0

정말 멋진 기술입니다. 또한 장기 실행 db 작업 부하를 별도의 ajax 요청으로 분리하여 작업 부하가 병렬화되도록 할 수 있습니다. 우리는 한 응용 프로그램에서 그렇게했고 실제로 비행하기 시작했습니다. – hurikhan77

+0

물론 - 나는 내 두뇌가 이번 주에 너무 튀 겼다 고 생각한다. 왜 내가 Railscast를 처음 보지 않았을까?!? 아하, 고마워! –

0

서버 측 조각 캐싱에 대해 생각해 보셨습니까? 나는 그것을 광범위하게 사용했고, 더 끔찍하지도 않았습니다. 단순히 '로그인'된 사용자에 의존하는 내용을 '조각'으로 캐싱하고 정상적으로 렌더링 할 수 있습니다.

조각 캐싱에 대한 많은 좋은 자원이있다, 나는 문서에서 시작 했죠 : 또한 http://api.rubyonrails.org/classes/ActionController/Caching/Fragments.html

스케일링 레일 시리즈에서 아주 좋은 : http://railslab.newrelic.com/2009/02/09/episode-7-fragment-caching

+0

이것은 유효한 기술이지만 조각 캐싱이 작업 캐싱이나 페이지 캐싱보다 적은 이점을 제공한다는 점을 지적하는 것이 중요합니다. –

+0

진실, 진실, 단지 그것이 고려되었는지 확인하고 싶었습니다. – Ben

0

정적 콘텐츠 또는 캐시 된 콘텐츠의 시작을 제공 실제 작업 프로세스를 제공하는 속도를 늦추려면 리버스 프록시를 응용 프로그램의 프론트 엔드로 지정하십시오. 파일 시스템 캐시가 비효율적으로되기 때문에 실제 작업을 수행하고 속도 저하를 줄이는 프로세스가 해제됩니다. 또한 "클라이언트 측 캐싱"을 여러 방문자에게 공유 할 수 있도록 도와줍니다. NewRelic의 캐싱 및 스케일링에 대한 환상적인 화면 캐스트 시리즈를 살펴보십시오. http://railslab.newrelic.com/scaling-rails