캐시와 세션의 장점
세션과 캐시에 데이터 테이블을 저장하는 것의 차이점은 무엇입니까? 장점과 단점은 무엇입니까?
따라서 결과를 데이터 테이블에 반환하고 그리드 뷰에 바인딩하는 간단한 검색 페이지 인 경우. 사용자 'a'가 검색하고 사용자 'b'가 검색하는 경우 각 사용자가 다른 결과를 가질 가능성이 가장 높기 때문에 세션에 저장하는 것이 더 낫습니다. 또는 각 검색을 캐시에 저장할 수 있습니까? 단 하나의 캐시. 기본적으로 내가 말하려는 것은 캐시를 덮어 쓰는 것입니다.
한 가지 중요한 차이점은 캐시의 항목이 지정된 시간 후에 만료 될 수 있다는 것입니다 (캐시에서 제거됨). 세션에 넣은 항목은 세션이 끝날 때까지 그대로 유지됩니다.
ASP.NET은 사용 가능한 메모리 양이 적을 때 캐시에서 항목을 제거 할 수도 있습니다.
또 다른 차이점은 세션 상태를 외부 (상태 서버, SQL 서버)로 유지하고 웹앱의 여러 인스턴스간에 공유 (로드 밸런싱을 위해) 할 수 있다는 것입니다. 이것은 캐시의 경우가 아닙니다.
이러한 차이점 외에도 (다른 사람들이 언급했듯이) : 세션은 사용자 / 세션 당이고 캐시는 응용 프로그램 당입니다.
AFAIK, 주요 차이점은 세션은 사용자 당이고 캐시는 애플리케이션 범위 항목에 대한 것입니다.
다른 답변에서 언급했듯이 사용자 별 정보를 캐시에 저장할 수 있으며 키 (세션 또는 쿠키 별)를 제공하면됩니다. 그런 다음 캐시의 항목을 만료하고 항목에 대한 종속성을 설정하는 더 많은 제어 권한이 있습니다. 따라서 문제의 DataTable이 정기적으로 변경되는 경우 캐싱이 적절한 옵션 일 것입니다. 그렇지 않으면 정적 세션이면 더 적절할 수 있습니다. 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?
(아니요, 사용자 이름과 검색어로 구성된 키와 함께 캐시를 사용하십시오.)
(예, 검색어 키를 사용하여 캐시를 사용합니다.)
솔직히, 개발 과정이 멀지 않다면 나중에 캐싱 / 상태 문제를 해결하는 것을 고려할 것입니다. 필요하지 않을 수도 있습니다.
성능 조정의 처음 세 가지 규칙은 다음과 같습니다. 1. 측정, 2. 더 측정합니다. 3. 다시 측정 ...
또 다른 중요한 차이점 은 동시 비동기 Ajax 요청이 실행되면 세션 상태가 차단되어 성능에 영향을 미친다는 것입니다.
캐시는 데이터를 획득하는 횟수를 줄이기 위해 애플리케이션 범위에 있습니다. 세션은 특정 사용자 상태를 제공 할 목적으로 사용자의 세션 범위에 있습니다.
ASP.NET에 대해 세션을 구성한 방법에 따라 다릅니다. 세션을 데이터베이스 또는 메모리에 저장하고 있습니까? 메모리에서 별도의 서버를 사용하고 있거나 현재 웹 서버를 세션에 사용하고 있습니까?
설정 방법에 따라 많은 양의 데이터를 저장하고 있음을 알려주는 데이터 테이블과 같은 것을 사용할 때 성능에 영향을 미칠 수 있습니다.
또한 세션은 사용자별로 저장되며 쿠키를 허용하지 않고 ASP.NET을 쿠키없는 모드로 설정 한 경우 세션 쿠키 또는 URL에 저장된 세션 티켓을 통해 사용자별로 검색됩니다. 캐시하는 모든 항목은 응용 프로그램 수준에서 캐시되며 원하는 것이 든 아니든 모든 사용자 세션에서 사용할 수 있습니다.
세션은 사용자 당이며 캐시는 애플리케이션 용입니다.
캐시의 항목은 만료 시간 (슬라이딩 또는 고정) 및 IIS 작업자 프로세스의 메모리 제약 조건에 따라 자동으로 제거 될 수 있습니다.
따라서 기본적으로 캐시의 항목은 절대로 존재하지 않지만 세션은 세션이 끝날 때까지 그대로 유지됩니다.
사용자 단위로 항목을 저장하면 (세션을 통해 또는 캐시를 창의적으로 사용하여) 많은 메모리를 사용할 수 있으므로 신중하게 고려해야합니다.
무엇보다 IIS가 작업자 프로세스를 재설정하면 캐시와 세션이 손실 될 수 있습니다.
이 답변을 참조하십시오 .
memcached 또는 velocity와 같은 백엔드 공급자를 사용하지 않는 한 세션은 앱 성능을 저하시킬 수 있습니다. 일반적으로 피해야합니다.
참고 URL : https://stackoverflow.com/questions/428634/advantages-of-cache-vs-session
'IT Share you' 카테고리의 다른 글
.asar 파일의 압축을 푸는 방법은 무엇입니까? (0) | 2020.11.10 |
---|---|
항목의 상위 항목 검색 오류 : 지정된 이름 'android : TextAppearance.Material.Widget.Button.Borderless.Colored'와 일치하는 리소스가 없습니다. (0) | 2020.11.10 |
MATLAB에서 24.0000이 24.0000과 다른 이유는 무엇입니까? (0) | 2020.11.10 |
JSP / 서블릿 웹 애플리케이션에서 XSS 방지 (0) | 2020.11.10 |
교리 2 : 쿼리 작성기로 쿼리 업데이트 (0) | 2020.11.10 |