캐시와 세션의 이점
데이터 테이블을 세션에 저장하는 것과 캐시에 저장하는 것의 차이점은 무엇입니까?장점과 단점은 무엇입니까?
따라서 단순 검색 페이지에서 데이터 테이블을 반환하고 그리드 보기에 바인딩할 수 있습니다.사용자 'a'가 검색하고 사용자 'b'가 검색하는 경우 각 사용자의 결과가 다를 가능성이 높기 때문에 세션에 저장하는 것이 더 나은지 아니면 각 검색을 캐시에 계속 저장할 수 있는지 아니면 캐시가 하나뿐이기 때문에 의미가 없는지 확인합니다.기본적으로 제가 말하고자 하는 것은 캐시가 덮어쓰여질 것이라는 것입니다.
한 가지 중요한 차이점은 캐시의 항목이 지정된 시간이 지나면 만료(캐시에서 제거됨)될 수 있다는 점입니다.세션에 포함된 항목은 세션이 종료될 때까지 그대로 유지됩니다.
사용 가능한 메모리 양이 적어지면 ASP.NET은 캐시에서 항목을 제거할 수도 있습니다.
또 다른 차이점은 세션 상태를 외부(상태 서버, SQL 서버)로 유지하고 로드 밸런싱을 위해 웹 앱의 여러 인스턴스 간에 공유할 수 있다는 점입니다.캐시는 그렇지 않습니다.
(다른 사람들이 언급한 바와 같이) 이러한 차이점 외에도 세션은 사용자/세션별인 반면 캐시는 애플리케이션별입니다.
AFAIK, 핵심적인 차이점은 세션이 사용자당인 반면 캐시는 애플리케이션 범위 항목에 적용된다는 것입니다.
다른 답변에서 설명한 대로 세션 또는 쿠키별로 키를 제공하면 캐시에 사용자별 정보를 저장할 수 있습니다.그러면 캐시에서 항목을 만료하고 항목에 대한 종속성을 설정할 수 있습니다.따라서 문제의 데이터 테이블이 정기적으로 변경될 경우 캐슁이 적합한 옵션일 수 있습니다.그렇지 않으면 정적 세션이 더 적합할 수 있습니다.Steven Smith는 dnrtv의 캐싱에 대한 훌륭한 비디오를 가지고 있어 확인할 가치가 있습니다.
그것은 여러분이 무엇을 성취하려고 하는지, 얼마나 많은 시간을 갖는지에 달려있습니다.응용 프로그램에 상태를 저장하는 방법과 관련하여 고려해야 할 몇 가지 다른 대안이 있습니다.테이블 크기에 따라 쿠키에 상태를 저장할 수 있습니다(중요한 정보인 경우 암호화됨).또는 응용 프로그램 범위 데이터인 경우 페이지 또는 클래스의 정적 필드를 사용합니다.Application 개체도 있습니다.
업데이트: 여러분이 스스로에게 물어야 할 중요한 질문은 누가 이 데이터를 봐야 하는가 하는 것입니다.
Are they going to access the data frequently?
(아뇨, 신경쓰지 마세요.)
Is it going to change?
(아니요, 정적 필드 또는 응용프로그램을 사용합니다).
Is it acceptable for user a and user b to see the same results?
사용자 이름과 검색어로 구성된 키와 함께 캐시를 사용합니다.
예, 검색어 키를 사용하여 캐시를 사용합니다.
솔직히, 개발 기간이 얼마 남지 않았다면 캐슁/상태 문제를 나중으로 미루는 것을 고려해 보겠습니다. 필요하지 않을 수도 있습니다.
성능 조정의 처음 세 가지 규칙은 다음과 같습니다.치수, 2.좀 더 재봐요. 3.다시 측정...
또 다른 중요한 차이점은 동시 비동기 Ajax 요청이 실행되면 세션 상태가 차단되어 성능에 영향을 미친다는 것입니다.
캐시는 데이터가 획득되는 횟수를 줄이기 위해 애플리케이션 범위에 포함됩니다.세션은 특정 사용자 상태를 제공하기 위해 사용자의 세션 범위에 있습니다.
ASP.NET에 대해 세션을 구성하는 방법에 따라 다릅니다.세션을 데이터베이스에 저장하고 있습니까? 메모리에 저장하고 있습니까?메모리에 별도의 서버를 사용하고 있거나 세션에 현재 웹 서버를 사용하고 있습니까?
설정 방법에 따라 데이터 테이블과 같은 것을 사용할 때 성능이 영향을 받을 수 있습니다. 데이터 테이블은 대량의 데이터를 저장하고 있음을 알려줍니다.
또한 세션은 사용자별로 저장되며 사용자가 쿠키를 허용하지 않고 ASP.NET을 쿠키 없는 모드로 설정한 경우 세션 쿠키 또는 URL에 저장된 세션 티켓을 사용하여 사용자별로 검색됩니다.캐시하는 모든 항목은 응용프로그램 수준에서 캐시되며 원하는 항목이 아닐 수도 있는 모든 사용자 세션에서 사용할 수 있습니다.
세션은 사용자당, 캐시는 응용 프로그램용입니다.
캐시에 있는 항목은 IIS 작업자 프로세스의 만료 시간(슬라이딩 또는 고정)과 메모리 제약 조건에 따라 자동으로 제거될 수 있으며 제거됩니다.
따라서 기본적으로 캐시의 항목은 존재하지 않지만 세션은 세션이 끝날 때까지 유지됩니다.
세션 또는 캐시의 창의적인 사용을 통해 사용자별로 항목을 저장하면 많은 메모리 사용이 발생할 수 있으므로 신중하게 고려해야 합니다.
또한 IIS가 작업자 프로세스를 재설정하면 캐시 및 세션이 손실될 수 있습니다.
memcached 또는 velocity와 같은 백엔드 공급자를 사용하지 않는 한 세션에서 애플리케이션 성능이 저하될 수 있습니다.일반적으로 당신은 그것을 피해야 합니다.
제가 알기로는, 모든 것은 당신의 필요에 달려 있습니다.
사용자의 상태를 유지해야 할 때마다 세션을 사용할 때 매우 주의해야 합니다.기본 설정은 개별 서버의 메모리를 사용하는 'InProc'로, 클라우드 기반 애플리케이션에서는 제대로 작동하지 않습니다.이것은 멀티 인스턴스 웹 팜 환경에서 응용 프로그램을 호스팅하는 사용자에게 적용될 수 있습니다.윈도우즈 Azure 로드 밸런서는 연결된 노드 내에서 라운드 로빈 할당을 사용합니다.
세션 저장소에 여러 옵션이 있습니다.SQL Server는 세션 상태의 저장소로도 사용할 수 있습니다.테이블 스토리지 공급자 등과 같은 사용자 지정 세션 기술을 사용할 수 있습니다.
캐시는 서버의 메모리에도 저장되지만 사용자와 관련이 없습니다.동일한 풀 내의 모든 사용자가 애플리케이션 캐시 데이터에 액세스할 수 있습니다.즉, 클라우드에서는 클라우드 공급자가 제공하는 캐싱 서비스를 사용해야 합니다.Azure는 Windows Azure 분산 캐싱 서비스를 제공합니다.
사실 개발자들은 응용프로그램에 기술을 적용할 때 상태 관리 기술의 영향에 대해 신경 쓰지 않습니다.그것
"클라이언트가 클라우드를 지원하지 않는 경우 클라우드 시나리오에 대해 걱정할 필요가 없습니다."
언급URL : https://stackoverflow.com/questions/428634/advantages-of-cache-vs-session
'programing' 카테고리의 다른 글
| C를 배우는 흥미로운 프로젝트? (0) | 2023.07.13 |
|---|---|
| [UISCreen mainScreen]입니다.iOS8에서 방향 의존적이 되는 bounds.size? (0) | 2023.07.13 |
| Chrome localhost 쿠키가 설정되지 않음 (0) | 2023.07.13 |
| iOS 스크린샷 탐지? (0) | 2023.07.13 |
| Oracle이 전날 기록 가져오기 (0) | 2023.07.13 |