Nice programing

캐시 VS 세션 VS 쿠키?

nicepro 2020. 12. 1. 19:43
반응형

캐시 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로 인코딩 된 문자열을 확인하십시오.

편집하다:

Mehrdad Afshari의 원래 질문과 의견에 대한 추가 설명 후에는 Session을 사용하지만 저장소를 InProc 대신 Sql Server로 설정하는 것이 좋습니다.

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

세션 시간 초과는 계속 유지되지만 서버가 다시 시작되는 경우에도 응용 프로그램 풀 재생에서 유지됩니다.

영구적 인 저장소가 정말로 필요한 경우 원래 설명했듯이 데이터베이스를 사용한 사용자 지정 솔루션이 유일한 솔루션입니다.


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

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

가능한 경우 세션을 피하고 (서버에 추가로드 및 메모리 사용량을 넣음) 페이지 크기를 낮게 유지하기 위해 가능한 경우 viewstate를 꺼 둡니다. 쿠키는 종종 가장 가벼운 옵션이지만 사용자가이 옵션을 해제했을 수 있으며 여전히 사이트를 사용할 수 있도록 허용하는 대체 모드가 필요합니다.

편집 (asker의 응답에 따라 설명 추가) :

Viewstate는 숨겨진 필드에 저장되며 Viewstate 저장소에있는 모든 개체의 직렬화 된 표현입니다. Viewstate는 페이지의 상태를 저장하는 데 자동으로 사용되지만 원하는 경우 프로그래밍 방식으로 Viewstate에 고유 한 개체를 명시 적으로 추가하고 검색 할 수 있습니다.

예, 데이터 세트는 Viewstate에 저장할 수 있습니다.


캐시는 모든 사용자간에 공유되므로 캐시 개체를 사용하여 세션 데이터를 캐시하면 안됩니다. 대신 Asp.Net 프로필 속성 을 사용하여 데이터를 저장하거나 Session_End 이벤트에 이벤트 처리기를 추가하고 사용자가 너무 오랫동안 컴퓨터를 떠날 경우 데이터를 저장할 수 있습니다.


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

진짜 질문은 :

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

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

그런 다음 세션을 저장할 위치를 고려
하십시오. 사이트가 높은 책임과 성능을 가져야하는 경우 세션을 프로세스 내부가 아니라 데이터베이스 내부에 저장해야합니다. 이렇게하면 여러 웹 서버간에 작업을 공유 할 수 있습니다. 그러나 단순함이 느슨해지고 (세션에 저장하는 객체가 직렬화 가능해야하기 때문에) 웹 서버와 데이터베이스 서버간에 한 번 더 왕복 할 수 있습니다.


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

  • chose the term "cookie" as "a cookie is a well-known computer science term that is used when describing an opaque piece of data held by an intermediary". The term opaque here implies that the content is of interest and relevance only to the server and not the client. The browser will automatically include the cookie in all its subsequent requests to the originating host of the cookie. A cookie has a name and a value, and other attribute such as domain and path, expiration date, version number, and comments. for more

Cookie Version:

Cookie: cookie-name=cookie-value; Comment=text; Domain=domain-name; Path=path-name; Max-Age=seconds; Version=1; Secure
  • Server-side session data can store large data and a client-side cookie data are limited in size sent from a website to server, cookies usually contains reference code by this saving data transfer size. Session closes as soon as browser closed, but cookies are exist longer. Browser sends a session ID to the server as a URL param, cookie, or even HTTP headers.

  • Cache is a hardware or software component that stores data so future requests for that data can be served faster; the data stored in a cache might be the result of an earlier computation, or the duplicate of data stored elsewhere.


Cookies are stored in browser as a text file format.It is stored limit amount of data.It is only allowing 4kb[4096bytes].It is not holding the multiple variable in cookies.

we can accessing the cookies values in easily.So it is less secure.The setcookie() function must appear BEFORE the tag.

Sessions are stored in server side.It is stored unlimit amount of data.It is holding the multiple variable in sessions. we cannot accessing the cookies values in easily.So it is more secure.


I was always confused between LocalStorage, SessionStorage and Cookie, but not anymore.

Just link the words are self explainable what they suppose to do.

LocalStorage: Local Storage, what does that mean, just thing you don't know anything about technology, but by the itself you can guess. It is some storage which stores data locally.

that what it is.

IT stores data in Browser without any expiration until user clear it through JavaScript code or Clear browser cache.

Session Storage: It seems like it also stores data but related to a session then how different it is from localStorage?

The main difference is your session storage data will be deleted once the session is finish or browser tab is closed or the browser is closed.

You can just try in browser console by setting

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

and then close tab and open again, you can still find localStorage data but not sessionStorage data.

Cookie: So this is totally different from the above two. A cookie generally used for the server-side purpose.

  • Stores data that has to be sent back to the server with subsequent requests.
  • Its expiration varies based on the type and the expiration duration can be set from either server-side or client-side (normally from server-side).
  • Cookies are primarily for server-side reading (can also be read on client-side), localStorage and sessionStorage can only be read on client-side.
  • Size must be less than 4KB.
  • Cookies can be made secure by setting the httpOnly flag as true for that cookie. This prevents client-side access to that cookie

참고URL : https://stackoverflow.com/questions/553185/cache-vs-session-vs-cookies

반응형