backend/django

장고에서 세션, 쿠키, 캐시에 대해서...

seul chan 2017. 4. 16. 23:19

세션, 쿠키, 캐시

웹 사이트를 이용하는 사용자는 HTTP GET/POST 방식 등을 통해 서버로 페이지를 요청한다 (request) 그러면 웹 브라우저는 서버에서 응답받은 HTML을 파싱해서 렌더링하게 됨

이 일련의 주기들을 '라운드 트립'이라고 한다.

그런데 HTTP 프로토콜은 상태를 저장이 안된다. 즉, 요청이 왔을때 응답인 HTML을 보내주고 연결을 끊어버려 사용자 입력 정보, 페이지 정보 등이 모두 손실됨

HTTP 프로토콜

web상에서 텍스트, 이미지, 사운드 등 파일을 주고받기 위한 통신 규약

동적인 웹사이트 등에서는 이를 유지할 필요가 있기 때문에 상태 관리를 할 수 있는 기능을 제공: 쿠키-클라이언트에 저장하는 방식(뷰, 쿼리 문자열 등), 세션-웹서버(데이터베이스)에 저장하는 방식

  1. 쿠키

클라이언트 정보를 클라이언트의 PC 하드에 저장, 작은 텍스트 파일 (정보 패킷)의 일종.

주로 웹사이트에 얼마나 자주, 몇번 방문 / 배너 클릭 / 검색 키워드 등...

기간이 정해져 있어 만료되면 자동으로 삭제.

  1. 세션

일정 시간동안 같은 사용자(브라우저)로 들어오는 요구를 하나의 상태로 보고 이를 일정하게 유지시키는 기술. 즉, 웹 서버에 접속해 있는 상태를 하나의 단위로 보고 세션이라 칭함.

  1. 캐시 (Cache)

데이터, 값을 미리 복사하여 임시로 저장해두는 장소

홈페이지를 로드하면 css, js 등의 파일을 사용자의 pc에 저장 => 저장된 데이터를 캐시?

캐시에는 주로 자주 쓰이는 이미지 파일 등 비교적 큰 데이터 파일이 저장

장고 Cache

장고에서 Session

Enabling session

  • 세션은 middleware의 도구로 사용

  • 사용하기 위해서는 다음과 같이

  • Edit the MIDDLEWARE setting and make sure it contains'django.contrib.sessions.middleware.SessionMiddleware'. The default settings.py created by django-admin startprojecthas SessionMiddleware activated.

    => 기본적으로 세팅이 되어있음

  • 사용하지 않으려면 SessionMiddleware를 미들웨어/세팅의 INSTALLED_APPS에서 삭제해줌

Configuringsession engine

default로 장고는 세션을 db에 저장 (django.contrib.sessions.models.Session 모델을 사용) => 편리하지만 몇가지 셋업을 통해서 캐시에 저장하여 더 빠르게??

database-backed sessions

이게 뭐지? 암튼 이걸 쓰려면 django.contrib.sessions 을 INSTALLED_APPS에 추가해주기?

Using cached sessions

더 나은 퍼포먼스를 위해서는 캐시 베이스드 세션을 써야한다? 캐시 공부를 더 해야할듯..

기본적으로 캐시 세팅을 하고 해줘야함 ==> 캐시 공부 하고 돌아오자

크롬에서 캐시, 쿠키 제거하는 새로고침

크롬에서 css를 적용하다 보니 수정을 해도 계속 캐시에 남아 수정이 안되는 상황이 발생했다.

우선 다양한 익스텐션으로 해결을 하…려다가 크롬에 '강력 새로고침'이라는 개발자 스러운 새로고침 기능이 있다는 것을 알고… ㅋㅋㅋ써보았다.

우선 개발자 모드를 키고 (맥 기준 option + command + i, 윈도우 기준 ctrl + shift + i ) 새로고침을 마우스 우클릭 해보면 일반 새로고침, 강력 새로고침, 캐시 비우기 및 강력 새로고침 세 개를 확인할 수 있다. 이중 캐시 비우기 및 강력 새로고침을 하면 css를 재적용 시키기가 가능하다!

물론 clear cach, EditThisCookie와 같은 다양한 익스텐션을 활용해도 괜찮지만 가장 편리해서 제일 많이 쓰지 않을까 싶다.