2010-01-17 5 views
1

항상 변경 사항을 감시해야하기 때문에 콜백은 CPU 측면에서 서버에 더 많은 부담을 줍니까?ASP.NET 캐시 - 콜백 대 새로 고침 - 어떻게 결정합니까?

캐시를 새로 고치는 장소를 찾아야하며 새로 고침을 잊어 버리는 경향이 있으므로 새로 고침을하면 코드 관리가 어려워지는 것으로 보입니까?

캐시가 새로 고쳐지면 캐시를 새로 고칠 때 호출 된 페이지가 더로드되는 것처럼 보입니다. 콜백은 덜 눈에 띄지 않을 수 있습니다.

새로 고침의 경우 페이지가 히트 될 때까지 잠시 동안 발생하지 않을 수 있으므로 부실 데이터가있을 수 있습니다. 페이지 히트, 즉시 데이터 변경.

생각하십니까? 위의 필자는 캐싱이 데이터베이스의 데이터에 대해 수행된다고 가정합니다.

답변

3

ASP.Net 캐시 콜백에서 SqlCacheDependency을 참조한 다음이 문서 The Mysterious Notification을 참조하여 콜백 작동 방법을 이해하십시오. 이 링크는 콜백 비용을 올바르게 인식하고 싶다면 반드시 읽어야합니다. 알림 전달과 관련된 비용 (발화, 전달, 수신은 데이터베이스 이 모두이라고 쓰여 있음)뿐만 아니라 단순히 업데이트/삽입/삭제 문에 영향을주는 알림을 설정하는 데 드는 비용이 있습니다. 이는 캐시 된 테이블에 닿습니다. 다시, 링크 된 기사를 읽어보십시오. 콜백은 새로 고침과 어떻게 비교됩니까? 정확함이 그림에 추가되면 언제든지 사용자 정의 새로 고침 주위에 콜백이 실행됩니다 ...

진짜 질문은 결코 콜백 대 새로 고침이 아닙니다.콜백을 할 수 있다면 콜백은 새로 고침보다 항상 효율적이고 버그가 발생하기 쉽기 때문에 콜백을 수행하십시오. 진짜 질문은 캐시하거나 캐시하지 않는 것입니다.

1

콜백은 특별한 이벤트입니다. 변경 사항을 감시하지는 않지만 이벤트가 트리거되면 콜백 발생 새로 고침은 요청 페이지의 양식입니다. 어떤 종류의 앱을 사용하고 있는지에 따라 다릅니다.

전체 페이지에서 새로 고침을 사용하는 대신 AJAX 부품을 사용하여 해당 정보를 새로 고칩니다. (모르기 때문에 전체 또는 일부를 새로 고침)

좋은 캐싱 메커니즘을 만들지 않은 경우 캐시가 더 비쌀 수도 있습니다.

1

콜백을 사용해도 서버가 변경 사항을 "감시"하지 않습니다. 주기적으로 만료되는 타이머를 유지하고 모든 현재 항목이 만료되었는지 확인하도록합니다. 항목에 액세스 할 때 만기가 슬라이딩 창인 경우 만기 시간이 조정됩니다. 만료 여부를 확인하는 과정에는 약간의 시간이 걸릴 수 있지만, 항목을 제거해야하는 시점을 찾기 위해 CPU가 끊임없이보고있는 것처럼 아닙니다. 캐시에서 사용하지 않는 항목을 일정에 따라 자동으로 제거하거나 더티 (값이 변경 될 때까지)를 유지하려는 경우 가장 최근의 값이 항상 사용할 수 있습니다.

1

콜백이 있으면 데이터가 만료되지 않은 동안 상당한 리소스 비용이 부과되지 않습니다. ASP.NET은 콜백을 호출해야하는 경우 모든 밀리를 확인하지 않습니다. 그러나이 특정 부분이 한 번만 필요 했더라도 데이터가 항상 캐시에 존재하게됩니다 (콜백을 사용하여 새로 고침한다고 가정).

일반적으로이 기능을 너무 똑똑하게 사용하지 말고 비어있는 캐시를로드하려고하면 안됩니다. 그렇게하면 실제로 사용하는 캐시에 데이터 만 저장할 수 있습니다. 새로 고침을위한 시간이 너무 오래 걸리는 경우에만 선제 적으로 데이터를로드해야합니다.

+0

거의 상관 없지만 캐시 콜백은 반드시 캐시를 다시 채울 필요는 없습니다. 그럴 것이라고 생각하는 것 같습니다. – Chris

+0

예, "콜백을 사용하여 새로 고침을 사용한다고 가정 할 때"라는 의미입니다. 그러나 캐시 무효화를위한 콜백을받을 때 당신은 무엇을 할 것입니까? –

관련 문제