programing

캐시 VS 세션 VS 쿠키?

telecom 2023. 6. 9. 21:46
반응형

캐시 VS 세션 VS 쿠키?

캐시 VS 세션 VS 쿠키에 대한 주의사항 및 주의사항은 무엇입니까?

예:
저는 세션 변수를 많이 사용하고 있으며 사용자가 제품을 주문하기 시작한 다음 점심을 먹으러 갔다가 몇 시간 후에 돌아와 예약을 계속할 때 때때로 예약 애플리케이션에 문제가 있습니다.나는 사용자가 예약을 확인하거나 취소할 때까지 세션에 예약을 저장하므로 사용자가 브라우저에서 X를 클릭하기만 하면 데이터베이스와 대화하고 데이터베이스에서 중간 예약을 처리할 필요가 없습니다.

대신 캐시나 쿠키 또는 어떤 조합을 사용해야 합니까?

(또한 앱에 오류가 있을 때 세션 객체가 자동으로 재설정되고 그로 인해 더 많은 문제가 발생합니다.)

저는 주로 데스크톱 프로그래밍을 하고 있으며, 여기에는 많은 지식이 부족하다고 생각하므로 캐시, 세션, 쿠키(또는 DB)를 사용할 위치를 확장할 수 있는 사람이라면 누구나 감사할 것입니다.

편집: 답변을 보니 DB와 쿠키의 조합이 제가 원하는 것 같습니다.

  1. 세션 ID에 연결된 데이터베이스에 예약을 저장해야 합니다.
  2. 세션 ID를 쿠키에 저장합니다(암호화됨).
  3. 쿠키를 확인하고 데이터베이스에서 예약을 가져오는 모든 페이지 로드
  4. 일주일에 한 번씩 미완성 예약을 정리하는 정리 절차가 있습니다.

사용자가 가격과 기타 중요한 데이터를 변경할 수 있고 모든 것을 검증해야 했기 때문에 예약을 쿠키로 저장할 수 없습니다(데이터를 신뢰할 수 없습니다).

제가 제대로 이해했나요?

그리고 여러분 모두에게 훌륭한 설명을 해주셔서 감사합니다!

상태 관리는 데스크톱 애플리케이션의 관점에서 웹 환경에 접근할 때 습득해야 하는 중요한 사항입니다.

  • Session서버의 현재 웹 세션에 대한 사용자별 정보를 저장하는 데 사용됩니다.데이터베이스 서버를 백엔드 저장소로 사용할 수 있습니다.
  • Cookie현재 웹 세션에 대한 사용자별 정보 또는 클라이언트의 영구 정보를 저장하는 데 사용해야 하므로 클라이언트는 쿠키의 내용을 제어할 수 있습니다.
  • Cache개체는 단일 응용 프로그램에서 사용자 간에 공유됩니다.주요 목적은 데이터 저장소에서 데이터를 캐슁하는 것이며 기본 스토리지로 사용해서는 안 됩니다.자동 무효화 기능을 지원합니다.
  • Application개체는 응용 프로그램 전체 상태를 저장하기 위해 사용자 간에 공유되므로 이에 따라 사용해야 합니다.

인증되지 않은 여러 사용자가 응용프로그램을 사용하는 경우 데이터를 쿠키에 저장하는 것이 좋습니다.인증이 필요한 경우 DB에 데이터를 수동으로 저장하거나 ASP.NET 프로필 관리 기능을 사용할 수 있습니다.

웹은 본질적으로 단절된 모델이며 언급된 옵션(세션, 애플리케이션, 캐시 등) 중 어느 것도 충분히 신뢰할 수 없습니다.세션 시간 초과, 작업자 프로세스 재활용 등이 발생합니다.

사용자 진행 상황을 장기간에 걸쳐 안정적으로 저장해야 하는 경우 데이터베이스가 유일한 해결책입니다.사용자 프로파일이 있는 경우(사용자가 로그인해야 하는 경우) 간단한 방법입니다.그렇지 않은 경우 고유 ID를 생성하고 쿠키(또는 URL)에 저장한 후 해당 ID를 기반으로 사용자를 추적합니다.

ID가 암호화되어 있는지 확인한 다음 숫자 값이 아닌 base64로 인코딩된 문자열만 확인합니다.

편집:

Mhrdad Afshari의 원래 질문과 의견에 대한 추가 설명 후에는 Session을 사용하되 InProc 대신 Sql Server로 스토리지를 설정하는 것이 좋습니다.

설정 방법에 대한 자세한 내용과 지침은 http://msdn.microsoft.com/en-us/library/ms178586.aspx

세션 시간 초과는 계속 유지되지만 응용프로그램 풀 재활용은 서버를 다시 시작해도 유지됩니다.

영구 스토리지가 정말로 필요한 경우에는 앞서 설명한 대로 데이터베이스를 사용한 맞춤형 솔루션이 유일한 솔루션입니다.

서버에 저장된 세션은 기본적으로 20분 후에 시간 초과됩니다(조정 가능).시간 초과를 방지하기 위해 쿠키에 저장하거나 보기 상태(사용 가능한 경우)에 저장합니다.

상태가 InProc(기본 설정)에 저장되어 있는 경우 팜에 서버가 두 개 이상 있으면 이후 호출을 위해 팜의 동일한 서버에 사용자를 유지하는 일종의 "고정 세션"을 구현하지 않은 경우에도 문제가 발생합니다.

가능한 경우 세션을 피하고(서버에 추가 로드 및 메모리 사용량이 있음), 페이지 크기를 낮게 유지하기 위해 가능한 경우 보기 상태를 해제합니다.쿠키가 가장 가벼운 옵션인 경우가 많지만 사용자가 이 옵션을 해제할 수 있으므로 사이트를 계속 사용할 수 있는 예비 모드가 필요합니다.

편집(질문자의 답변을 기반으로 설명 추가):

View state는 숨겨진 필드에 저장되며 View state 스토리지에 있는 모든 객체의 직렬화된 표현입니다.보기 상태는 페이지의 상태를 저장하는 데 자동으로 사용되지만, 원하는 경우 프로그램적으로 보기 상태에 사용자 자신의 개체를 추가하거나 검색할 수 있습니다.

예, 데이터셋을 View 상태로 저장할 수 있습니다.

먼저 알아야 할 것은! 쿠키는 세션에서 사용됩니다!요청 시마다 클라이언트와 서버 간에 교환되는 쿠키 덕분에 서버는 사용자가 누구인지 알 수 있습니다(이것은 HTTP 헤더 set-cookie 및 cookie와 함께 작동함).

진짜 질문은 다음과 같습니다.

  • 탐색 중에 사용자 정보를 저장하려면 세션을 사용해야 합니다.

  • 클라이언트가 쿠키를 지원하지 않는 경우, URL로 인코딩된 각 요청 내에 쿠키를 저장할 수 있습니다. 서버는 요청에 적합한 세션을 찾기 위해 쿠키 대신 URL을 사용합니다.

그런 다음 세션을 저장할 위치를 고려합니다.
사이트가 높은 불연속성과 높은 성능을 가져야 하는 경우 세션을 프로세스 내부가 아니라 데이터베이스 내부에 저장해야 합니다.이렇게 하면 여러 웹 서버 간에 작업을 공유할 수 있습니다.그러나 세션에 저장하는 개체는 직렬화되어야 하므로 단순성이 떨어지고 웹 서버와 데이터베이스 서버 간에 왕복이 한 번 더 발생합니다.

는 항상 LocalStorage, SessionStorage, Cookie를 혼동했지만 이제는 그렇지 않습니다.

단어들을 연결하면 그들이 무엇을 해야 하는지 스스로 설명할 수 있습니다.

로컬 저장소:로컬 스토리지, 즉 기술에 대해 아무것도 모르는 것이 무엇을 의미하는지, 그 자체로 추측할 수 있습니다.데이터를 로컬로 저장하는 일부 스토리지입니다.

그것이 바로 그것입니다.

IT는 JavaScript 코드 또는 Clear 브라우저 캐시를 통해 브라우저에 데이터를 저장합니다.

세션 저장소:데이터도 저장하는 것처럼 보이지만 세션과 관련이 있다면 localStorage와 얼마나 다른가요?

가장 큰 차이점은 당신의 것입니다.

설정을 통해 브라우저 콘솔에서 시도할 수 있습니다.

localStorage.setItem('name' , 'alex')
sessionStorage.setItem('session','seesion value')

탭을 닫았다가 다시 열면 localStorage 데이터는 찾을 수 있지만 sessionStorage 데이터는 찾을 수 없습니다.

쿠키: 그래서 이것은 위의 두 가지와는 완전히 다릅니다.일반적으로 서버측 용도로 사용되는 쿠키입니다.

  • 이후 요청과 함께 서버로 다시 보내야 하는 데이터를 저장합니다.
  • 만료 기간은 유형에 따라 다르며, 만료 기간은 서버 측 또는 클라이언트 측(일반적으로 서버 측)에서 설정할 수 있습니다.
  • 쿠키는 주로 서버 측 읽기용이며(클라이언트 측에서도 읽을 수 있음), localStorage 및 sessionStorage는 클라이언트 측에서만 읽을 수 있습니다.
  • 크기는 4KB 미만이어야 합니다.
  • 쿠키에 대해 httpOnly 플래그를 true로 설정하여 쿠키를 안전하게 보호할 수 있습니다.이렇게 하면 해당 쿠키에 대한 클라이언트 측 액세스가 차단됩니다.

캐시는 모든 사용자가 공유하므로 캐시 개체를 사용하여 세션 데이터를 캐시하면 안 됩니다.대신 Asp를 사용할 수 있습니다.NetProfile 속성을 사용하여 데이터를 저장하거나 Session_End 이벤트에 이벤트 핸들러를 추가하여 사용자가 컴퓨터를 너무 오래 떠난 경우 데이터를 저장할 수 있습니다.

  • 쿠키는 클라이언트의 컴퓨터에 클라이언트별 정보를 저장하고 나중에 상태 정보를 얻기 위해 검색함으로써 공동으로 작동하는 소프트웨어 간에 공유되는 정보입니다.

  • 는 "쿠키는 중개인이 보유한 불투명한 데이터를 설명할 때 사용되는 잘 알려진 컴퓨터 과학 용어"로 "쿠키"라는 용어를 선택했다.여기서 불투명이라는 용어는 콘텐츠가 클라이언트가 아닌 서버에만 관심이 있고 관련성이 있음을 의미합니다.브라우저는 쿠키의 원래 호스트에 대한 이후 모든 요청에 쿠키를 자동으로 포함합니다.쿠키에는 이름과 값, 도메인 및 경로, 만료 날짜, 버전 번호 및 주석과 같은 기타 속성이 있습니다. 많은 것을 위하여

쿠키 버전:

Cookie: cookie-name=cookie-value; Comment=text; Domain=domain-name; Path=path-name; Max-Age=seconds; Version=1; Secure
  • 서버측 세션 데이터는 대용량 데이터를 저장할 수 있으며 클라이언트측 쿠키 데이터는 웹 사이트에서 서버로 전송되는 크기가 제한됩니다. 쿠키는 일반적으로 저장된 데이터 전송 크기에 따라 참조 코드를 포함합니다.브라우저가 닫히자마자 세션이 닫히지만 쿠키가 더 오래 존재합니다.브라우저는 세션 ID를 URL 매개변수, 쿠키 또는 HTTP 헤더로 서버에 보냅니다.

  • 캐시는 데이터를 저장하는 하드웨어 또는 소프트웨어 구성 요소로, 데이터에 대한 향후 요청을 더 빠르게 처리할 수 있습니다. 캐시에 저장된 데이터는 이전 계산의 결과이거나 다른 곳에 저장된 데이터의 복제일 수 있습니다.

쿠키는 텍스트 파일 형식으로 브라우저에 저장됩니다.데이터 제한량이 저장됩니다.4kb[4096바이트]만 허용됩니다.쿠키의 다중 변수를 보유하고 있지 않습니다.

우리는 쿠키 값에 쉽게 접근할 수 있습니다.그래서 안전성이 떨어집니다.set cookie() 함수는 태그 앞에 나타나야 합니다.

세션은 서버 측에 저장됩니다.데이터는 무제한으로 저장됩니다.세션에서 다중 변수를 보유하고 있습니다.에서 쿠키 값에 쉽게 액세스할 수 없습니다.그래서 더 안전합니다.

언급URL : https://stackoverflow.com/questions/553185/cache-vs-session-vs-cookies

반응형