본문 바로가기

전체 글

(133)
JPA- 방언,구동방식 데이터베이스 방언 • JPA는 특정 데이터베이스에 종속 X • 각각의 데이터베이스가 제공하는 SQL 문법과 함수는 조금씩 다름 • 가변 문자: MySQL은 VARCHAR, Oracle은 VARCHAR2 • 문자열을 자르는 함수: SQL 표준은 SUBSTRING(), Oracle은 SUBSTR() • 페이징: MySQL은 LIMIT , Oracle은 ROWNUM • 방언: SQL 표준을 지키지 않는 특정 데이터베이스만의 고유한 기능 • hibernate.dialect 속성에 지정 • H2 : org.hibernate.dialect.H2Dialect • Oracle 10g : org.hibernate.dialect.Oracle10gDialect • MySQL : org.hibernate.dialect.MyS..
HTTP-프록시 캐시 Cache-Control 캐시 지시어(directives) - 기타 • Cache-Control: public • 응답이 public 캐시에 저장되어도 됨 • Cache-Control: private • 응답이 해당 사용자만을 위한 것임, private 캐시에 저장해야 함(기본값) • Cache-Control: s-maxage • 프록시 캐시에만 적용되는 max-age • Age: 60 (HTTP 헤더) • 오리진 서버에서 응답 후 프록시 캐시 내에 머문 시간(초) 캐시 무효화 Cache-Control 확실한 캐시 무효화 응답 • Cache-Control: no-cache, no-store, must-revalidate • Pragma: no-cache • HTTP 1.0 하위 호환 Cache-Contr..
HTTP-검증 헤더와 조건부 요청 검증 헤더와 조건부 요청 정리 • 캐시 유효 시간이 초과해도, 서버의 데이터가 갱신되지 않으면 • 304 Not Modified + 헤더 메타 정보만 응답(바디X) • 클라이언트는 서버가 보낸 응답 헤더 정보로 캐시의 메타 정보를 갱신 • 클라이언트는 캐시에 저장되어 있는 데이터 재활용 • 결과적으로 네트워크 다운로드가 발생하지만 용량이 적은 헤더 정보만 다운로드 • 매우 실용적인 해결책 검증 헤더와 조건부 요청 • 검증 헤더 • 캐시 데이터와 서버 데이터가 같은지 검증하는 데이터 • Last-Modified , ETag • 조건부 요청 헤더 • 검증 헤더로 조건에 따른 분기 • If-Modified-Since: Last-Modified 사용 • If-None-Match: ETag 사용 • 조건이 만족하..
HTTP-캐시 캐시 기본 동작 캐시가 없을 때 • 데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다운로드 받아야 한다. • 인터넷 네트워크는 매우 느리고 비싸다. • 브라우저 로딩 속도가 느리다. • 느린 사용자 경험 캐시 적용 • 캐시 덕분에 캐시 가능 시간동안 네트워크를 사용하지 않아도 된다. • 비싼 네트워크 사용량을 줄일 수 있다. • 브라우저 로딩 속도가 매우 빠르다. • 빠른 사용자 경험 캐시 시간 초과 • 캐시 유효 시간이 초과하면, 서버를 통해 데이터를 다시 조회하고, 캐시를 갱신한다. • 이때 다시 네트워크 다운로드가 발생한다
HTTP-쿠키 쿠키 • Set-Cookie: 서버에서 클라이언트로 쿠키 전달(응답) • Cookie: 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP 요청시 서버로 전달 Stateless • HTTP는 무상태(Stateless) 프로토콜이다. • 클라이언트와 서버가 요청과 응답을 주고 받으면 연결이 끊어진다. • 클라이언트가 다시 요청하면 서버는 이전 요청을 기억하지 못한다. • 클라이언트와 서버는 서로 상태를 유지하지 않는다. 모든 요청에 정보를 넘기는 문제 • 모든 요청에 사용자 정보가 포함되도록 개발 해야함 • 브라우저를 완전히 종료하고 다시 열면? 쿠키 • 예) set-cookie: sessionId=abcde1234; expires=Sat, 26-Dec-2020 00:00:00 GMT; path=/; d..
HTTP-전송 방식, 일반 정보 전송 방식 설명 • 단순 전송 • 압축 전송 • 분할 전송 • 범위 전송 일반 정보 • From: 유저 에이전트의 이메일 정보 • Referer: 이전 웹 페이지 주소 • User-Agent: 유저 에이전트 애플리케이션 정보 • Server: 요청을 처리하는 오리진 서버의 소프트웨어 정보 • Date: 메시지가 생성된 날짜 From 유저 에이전트의 이메일 정보 • 일반적으로 잘 사용되지 않음 • 검색 엔진 같은 곳에서, 주로 사용 • 요청에서 사용 Referer 이전 웹 페이지 주소 • 현재 요청된 페이지의 이전 웹 페이지 주소 • A -> B로 이동하는 경우 B를 요청할 때 Referer: A 를 포함해서 요청 • Referer를 사용해서 유입 경로 분석 가능 • 요청에서 사용 User-Agent 유저..
HTTP-헤더 HTTP 헤더 용도 • HTTP 전송에 필요한 모든 부가정보 • 예) 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐 시 관리 정보... • 헤더 분류 • General 헤더: 메시지 전체에 적용되는 정보, 예) Connection: close • Request 헤더: 요청 정보, 예) User-Agent: Mozilla/5.0 (Macintosh; ..) • Response 헤더: 응답 정보, 예) Server: Apache • Entity 헤더: 엔티티 바디 정보, 예) Content-Type: text/html, Content-Length: 3423 • 메시지 본문(message body)은 엔티티 본문(entity body)을 전달하는데 사용 • 엔티티 ..
HTTP-상태코드 상태 코드 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능 • 1xx (Informational): 요청이 수신되어 처리중 • 2xx (Successful): 요청 정상 처리 • 3xx (Redirection): 요청을 완료하려면 추가 행동이 필요 • 4xx (Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음 • 5xx (Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함 만약 모르는 상태 코드가 나타나면? • 클라이언트가 인식할 수 없는 상태코드를 서버가 반환하면? • 클라이언트는 상위 상태코드로 해석해서 처리 • 미래에 새로운 상태 코드가 추가되어도 클라이언트를 변경하지 않아도 됨 • 예) • 299 ??? -> 2xx (S..