문제

내가 개발하는 과정에서는 소셜 네트워크 사이트입니다.

고 생각의 확장성을에서 하루에 하나의 프로젝트,나는 미세한 조정 사이트를 쿼리하는 내 능력이 있습니다.

그러나;특정 페이지가 아주 무거운 데이터와 난 아주 확실하지 않으면 그들은 선적으로 빠르게 수 있기 때문에 그렇게 생각하고 있었의 구현이 캐싱 솔루션입니다.

하지만 확실히 내가 무엇을 해야 캐시지 캐시입니다.는 경우 또는 현재 페이지 로딩 시간의 1 번째는 좋거나 나쁜.

가장 무거운 쿼리를 잡아 멤버 정보를 이 쿼리를 가져오는 모든 회원의 정보 및 관련된 아무것도 그들과 같은 사이트에의 경우,자신의 목표를 블로그 형식의 항목,격려,사진,상태 업데이트(twitter),블로그 정보(에 대한 교차의 항목)등이 있습니다.

어쨌든,해야 하 캐시오.그리고 당신이 생각 1 번째 페이지 로딩 시간을 합리적으로 빠른가?어떤 페이지의 두 번째 보다는 더 적은 사 4-6 이 10 초 단위로.

도움이 되었습니까?

해결책

가능한 경우 응용 프로그램의 각 계층에서 캐싱을 구현하겠습니다.

가장 높은 수준으로 페이지를 캐시하고 코드 레벨의 객체를 만들 수 있으며 데이터베이스가 쿼리와 주요 데이터를 가장 낮은 수준으로 올바르게 캐싱하고 있는지 확인할 수 있습니다.

캐시에 필요한 측면에서, 합리적으로 액세스 할 객체, 특히 자주 변경되지 않는 객체는 캐시해야합니다. 그런 다음 해당 객체의 캐시를 편집 할 때만 재설정 할 수 있습니다. (거의 모든 부하에서 캐시를 교체하는 일정한 사이클로 자주 업데이트되는 캐싱 객체에주의를 기울여야합니다.

성능 측정을 위해서는 단일 페이지로드하는 데 걸리는 시간을 보지 않지만 각 페이지가 압력을 받고있는 얼마나 빨리 성능을 테스트해야하므로 일부 성능 측정 도구는 Google을 살펴보십시오. 예를 들어 액세스 할 수없는 경우 사용자 정보 페이지가 가장 큰 캐싱 대상이 아닐 수 있습니다. 가장 많이 사용되는 페이지에 중점을 두어야합니다.

다른 팁

The typical answer is:

  • Cache information which is rarely updated.
  • Don't cache what change frequently.

In your case, you could cache everything in flat files (one file per user for example) and destroy a user cache file whenever something is updated by the corresponding. If the cache file does not exist, you create it before displaying the associated content.

Now about load time (which can be very different depending on the user location), here are some informative numbers from a PHP forum of a gaming site:

  • JS Load Time: 0.274
  • Query Count: 15
  • PHP Load Time: 0.0524
  • Memory Usage: 1.013 MB

And this is considered by the community as a good experience. But it is terribly subjective.

The page loading question was already asked:

What is considered a good response time for a dynamic, personalized web application?

In terms of caching, you have to measure the amount of time that would be spent loading the data each time versus loading from the cache. The bigger the cache, the less effective it becomes. So you don't want to load too much data into the cache. What we use here is a rolling cache, with the least recently used data being dropped once we hit the cache size limit. You then tune the limit according to actual performance results.

사용자 프로필 특정 데이터의 경우 Formsauth 티켓 / 쿠키에 가능한 한 많이 저장하십시오. 캐싱 (httpcontext.current.cache) 사용자 별 항목은 사용자 당 서버의 x 리소스가 필요하지만 세션과 동일하지만 두통이 적습니다. 사용자 티켓이나 쿠키 (4K와 같은)에 최대한 많이 오프로드 할 수 있다면 스케일링하는 동안 서버의 성능을 실제로 도울 수 있습니다.

페이지가 필요한 정보 만 검색해야합니다. 예를 들어, 블로그 데이터를로드하는 경우 사진을로드하지 마십시오. 더 많은 작업이지만, 확장하려면 각 페이지의 요구 사항을 분석해야합니다.

데이터베이스 쿼리 캐싱 (실행 계획 재사용), 객체 캐싱 (httpcontext.cache) 및 페이지 캐싱 (response.headers [만료]) 사이에 차이가 있는지 확인하십시오.

웹 디자인 전문가 트 빈센트 플랑드르 나왔을 통해 무엇을 4 초에는 너무 오래를 위한 웹 페이지합니다.내가 생각하는 것이 좋습니다.

로 캐싱 또는 다른 성능 최적화,이동 권하고 싶을 수행할 어떤 성능 테스트합니다.의 숫자가 있 성능 테스트 장비 시장에서 사용할 수 있습니다.테스트가 표시됩니다 어디에 문제 영역입니다.아무 의미가 없 당신에 추가 논리 캐싱하는 무언가를 이미 수행합니다.다른 한편으로 성능 문제 발생할 수 있습니다 당신이 기대하지 않을 수 있습니다,그들을 포함하는 데이터는 생각을 하지 않을 수도 있습니다 캐싱이 가능합니다.

뭔가 또는 성능 테스트는 그것을 찾을 수있는 코드에서는 교착 상태가 발생하는,또 어디로 간단한 데이터베이스의 최적화에 도움이 될 것이다.아마도 추가 인덱스 테이블의 속도 페이지를 추가하는 대신 무리 캐싱의 논리입니다.

나는 그것을 유지하는 간단 및 리팩터링을 위한 성능 뿐만 아니라 그렇게 할 필요가있다.

또한,시험 초기 및 테스트를 자주.나는 많이 알고 있는 사람들의 말을 고려한 성능을 마지막으로,하지만 당신은 정말로 코드를 자신을 구석으로 하지 않는 경우에는 적어도 시작을 고려하고 초기에는 개발 수명 주기가 있습니다.

일부 연구에 따르면 대화식 응용 프로그램은 250ms 이내에 피드백을 제공하여 사용자가 고착되어 있거나 작업이 실패했다고 생각하지 않아야합니다. 웹의 수락 수준은 다소 높으며, 일반적으로 새 페이지가로드되고 있다는 Webbrowser에서 피드백을 제공합니다. Ajax를 사용하면 브라우저에 무슨 일이 일어나고 있는지 보여주지 않기 때문에 Som 종류의 피드백을 제공하기 위해주의해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top