.net에 처음 설치되었으며, 예를 들어 범위에 DAL 개체와 같은 인스턴스를 유지하는 데 성능이 향상되는지 궁금합니다.자주 액세스하는 클래스의 인스턴스를 캐쉬해야합니까?
Coldfusion 세계에서 나는 구성 요소를 설치하고 응용 프로그램 범위에 저장하므로 코드가 해당 구성 요소를 사용해야 할 때마다 반복적으로 성능을 향상시킬 필요가 없습니다.
ASP.Net 앱에서이 작업을 수행하면 어떤 이점이 있습니까?
.net에 처음 설치되었으며, 예를 들어 범위에 DAL 개체와 같은 인스턴스를 유지하는 데 성능이 향상되는지 궁금합니다.자주 액세스하는 클래스의 인스턴스를 캐쉬해야합니까?
Coldfusion 세계에서 나는 구성 요소를 설치하고 응용 프로그램 범위에 저장하므로 코드가 해당 구성 요소를 사용해야 할 때마다 반복적으로 성능을 향상시킬 필요가 없습니다.
ASP.Net 앱에서이 작업을 수행하면 어떤 이점이 있습니까?
당신이 고려하고있는 수업에는 주 (State)가 있습니까? 그렇지 않다면 (그리고 DAL 클래스는 종종 상태를 갖지 않거나 상태를 필요로하지 않습니다.) 그렇다면 메소드를 정적으로 만들어야합니다. 그런 다음 전혀 인스턴스화 할 필요가 없습니다. 보유하고있는 유일한 상태가 연결 문자열이면 해당 속성 필드를 정적 속성 필드로 만들 수 있고 그런 식으로 인스턴스화 할 필요가 없습니다. 당신이 실제로 경험 성능 문제가 아니라면이 같은 최적화 자신을 걱정할 필요가 없습니다보다
그렇지 않으면, Flyweight
라는 디자인 패턴을 살펴.
먼저 비즈니스 문제를 해결하고 좋은 디자인을 사용하십시오. 데이터 액세스 코드에 알맞은 추상화 레이어가있는 한 나중에 캐싱 솔루션을 구현하면이 문제가 될 수 있습니다.
기억하십시오. 캐싱 솔루션은 복잡성을 극적으로 증가시킵니다.
아니오. .asp의 다중 계층 환경에서 이는 "시기 상조 최적화"의 경우로 간주됩니다. 스텁, 스크립트 및 프로그램의 사이트 모음이 확장되고 몇 달 동안 실행되면 로그 및 추적을보고 캐싱, 스폰 또는 재 작성되어 성능을 향상시킬 수 있는지 확인할 수 있습니다. 악명 높은 Jeff Atwood은 "웹 서버를위한 대부분의 코드 최적화는 시간과 시간에 맞게 코드를 수정하는 것이 아니라 새롭고 향상된 하드웨어에 돈을 쓰지 않아도 좋을 것입니다"라고 말합니다.
예 실제로 할 수 있습니다. 종종이 저장 공간은 Session
에 있습니다. 사용자가 원하는 데이터를 저장합니다.
세계적인 경우 Application_Start
이벤트에로드하여 어딘가에 배치 할 수 있습니다. HttpCache
일 수 있습니다.
그리고 일부 사람들은 전혀 최적화하지 않기 위해 "조기 최적화"를 사용합니다. 이것은 말도 안돼. 이 경우 캐시하는 것이 합리적입니다.
인스턴스 데이터가 포함 된 currentUser 객체처럼 세션에 저장하는 것이 합리적이라는 데 동의합니다. 어쩌면 닷넷은 다른 플랫폼보다 오브젝트를 만드는 것이 훨씬 더 효과적이라는 점에서 다른 동물이다. 감사 – JBeckton
하나의 사용
마지막으로, 항상 생성하는 것은 매우 비용이 많이 드는있는 캐시 개체에 유용하거나
난이 넓은 질문의 종류라고 생각합니다 (DB에서) 매우 자주 즉 테이블의 데이터를 사용하거나 XML 데이터된다. 나는 사용자 설정이나 환경 설정과 같이 서버 메모리 (캐시 된)에 저장해야하는 특정 사항이 있으며 케이스 별 평가를 사용할 수있는 다른 것들이 있다고 생각합니다. 나는 모두에게 참여에 대한 기여를하고있다. 감사합니다. – JBeckton