정의 : 자원 = 데이터베이스 레코드의 수집, 재생 = 이러한 레코드를 처리하고 해당 HTML을백그라운드 작업을 사용하여 페이지를 캐시하는 방법은 무엇입니까?
전류 출력 :
- 수신 클라이언트 요청 캐시 자원에 대한
- 확인
- 그렇지 않은 경우 캐시 또는 캐시에서 만료 됨 재생 됨
- 결과가
재생성 단계에서 10-15 초 동안 단일 서버 프로세스를 묶을 수 있다는 것이 문제입니다. 몇 명의 사용자가 동일한 리소스를 요청하면 동일한 리소스를 동시에 재생하는 두 개의 프로세스가 생성 될 수 있으며 각각 10-15 초가 소요될 수 있습니다.
프론트 엔드에서 "이 리소스를 재생성하십시오."라는 메시지를 백그라운드 프로세스에 보내지 않는 것이 좋지 않을까요?
하지만 사용자에게 표시되는 내용은 무엇입니까? "Rebuilding"은 허용되지 않습니다. 모든 리소스는 미리 캐시에 있어야합니다. 데이터베이스가 파일 시스템에 거의 중복되어 메모리에 들어가기에는 너무 커서 문제가 될 수 있습니다. 이것을 피할 수있는 방법이 있습니까? 이상적은 아니지만 유일한 탈출구처럼 보입니다.
하지만 문제가 하나 더 있습니다. 동일한 두 프로세스가 자원 재생성을 동시에 요청하지 못하게하는 방법은 무엇입니까? 프론트 엔드가 동일한 자원의 재생성을 요청하면 백그라운드 프로세스가 자원을 재생성 할 수 있습니다.
플랫폼 관련 솔루션을 제공하고자하는 경우 PHP와 Zend Framework를 사용하고 있습니다. 그래도 문제는 아니지만 -이 문제는 모든 언어/프레임 워크에 적용된다고 생각합니다.
감사합니다.
모든 사용자에 대해 캐시 된 html은 사용자별로 또는 동일합니까? 캐시가 만료되는 기준은 무엇입니까? 어쩌면 당신이 특정 세부 사항을 제공한다면 여기에 제네릭 솔루션을 제시하기가 어렵 기 때문에 특별한 경우에 뭔가 제안하는 것이 더 쉬울 것입니다. – serg