2009-11-26 6 views
0

.net에 처음 설치되었으며, 예를 들어 범위에 DAL 개체와 같은 인스턴스를 유지하는 데 성능이 향상되는지 궁금합니다.자주 액세스하는 클래스의 인스턴스를 캐쉬해야합니까?

Coldfusion 세계에서 나는 구성 요소를 설치하고 응용 프로그램 범위에 저장하므로 코드가 해당 구성 요소를 사용해야 할 때마다 반복적으로 성능을 향상시킬 필요가 없습니다.

ASP.Net 앱에서이 작업을 수행하면 어떤 이점이 있습니까?

+0

난이 넓은 질문의 종류라고 생각합니다 (DB에서) 매우 자주 즉 테이블의 데이터를 사용하거나 XML 데이터된다. 나는 사용자 설정이나 환경 설정과 같이 서버 메모리 (캐시 된)에 저장해야하는 특정 사항이 있으며 케이스 별 평가를 사용할 수있는 다른 것들이 있다고 생각합니다. 나는 모두에게 참여에 대한 기여를하고있다. 감사합니다. – JBeckton

답변

0

당신이 고려하고있는 수업에는 주 (State)가 있습니까? 그렇지 않다면 (그리고 DAL 클래스는 종종 상태를 갖지 않거나 상태를 필요로하지 않습니다.) 그렇다면 메소드를 정적으로 만들어야합니다. 그런 다음 전혀 인스턴스화 할 필요가 없습니다. 보유하고있는 유일한 상태가 연결 문자열이면 해당 속성 필드를 정적 속성 필드로 만들 수 있고 그런 식으로 인스턴스화 할 필요가 없습니다. 당신이 실제로 경험 성능 문제가 아니라면이 같은 최적화 자신을 걱정할 필요가 없습니다보다

그렇지 않으면, Flyweight

3

라는 디자인 패턴을 살펴.

먼저 비즈니스 문제를 해결하고 좋은 디자인을 사용하십시오. 데이터 액세스 코드에 알맞은 추상화 레이어가있는 한 나중에 캐싱 솔루션을 구현하면이 문제가 될 수 있습니다.

기억하십시오. 캐싱 솔루션은 복잡성을 극적으로 증가시킵니다.

2

아니오. .asp의 다중 계층 환경에서 이는 "시기 상조 최적화"의 경우로 간주됩니다. 스텁, 스크립트 및 프로그램의 사이트 모음이 확장되고 몇 달 동안 실행되면 로그 및 추적을보고 캐싱, 스폰 또는 재 작성되어 성능을 향상시킬 수 있는지 확인할 수 있습니다. 악명 높은 Jeff Atwood은 "웹 서버를위한 대부분의 코드 최적화는 시간과 시간에 맞게 코드를 수정하는 것이 아니라 새롭고 향상된 하드웨어에 돈을 쓰지 않아도 좋을 것입니다"라고 말합니다.

1

예 실제로 할 수 있습니다. 종종이 저장 공간은 Session에 있습니다. 사용자가 원하는 데이터를 저장합니다.

세계적인 경우 Application_Start 이벤트에로드하여 어딘가에 배치 할 수 있습니다. HttpCache 일 수 있습니다.

그리고 일부 사람들은 전혀 최적화하지 않기 위해 "조기 최적화"를 사용합니다. 이것은 말도 안돼. 이 경우 캐시하는 것이 합리적입니다.

+0

인스턴스 데이터가 포함 된 currentUser 객체처럼 세션에 저장하는 것이 합리적이라는 데 동의합니다. 어쩌면 닷넷은 다른 플랫폼보다 오브젝트를 만드는 것이 훨씬 더 효과적이라는 점에서 다른 동물이다. 감사 – JBeckton

1

하나의 사용

  • 하드웨어
  • 확장 성
    1. 성능 이점
    2. 주파수 같은 모든 요소를 ​​고려해야합니다 모든 객체를 캐시하기 전에 비용 편익 분석을 수행하는 것이 매우 중요합니다
    3. 유지 관리 능력
    4. 배달 가능 시간 (가장 중요한 요소 중 하나)

    마지막으로, 항상 생성하는 것은 매우 비용이 많이 드는있는 캐시 개체에 유용하거나

    관련 문제