Web
4 posts
HTTP 캐시와 조건부 요청 헤더

HTTP 캐시 웹 브라우저가 서버로부터 받은 데이터를 일시적으로 저장하는 공간을 HTTP 캐시라고 한다. 캐시는 데이터,값을 복사해 임시로 저장하는 장소를 가르키고 AWS에 따르면 다양한 유형이 있다. (데이터의 복사본을 저장하는 장소는 캐시, 캐시에 복사본을 저장하고 있다가 요청시 제공하는 과정 전체는 캐싱이라 한다.) 다만 조건부 요청 헤더와의 상호작용에 대한 이 글에선 HTTP 캐시(웹 캐시)만 다룰 예정. HTTP 캐시는 웹 서비스 성능 최적화에 도움을 주는데, 이미지나 자바스크립트 파일 등을 매번 다운로드하지 않고 복사본을 캐시에 저장해 두었다가 이후의 요청에 (유효시간 검증 후)캐시의 리소스를 사용할 수 있기 때문이다. 우리가 어떤 페이지에 처음 진입할 때와 n번째 진입할 때의 로딩 속도가 차이나는 이유도 여기에 있다. HTTP 캐시는 주로 HTTP 헤더를 통해 제어되는데, 대표적인 헤더는 아래 정도가 있다. : 캐시의 유효시간을 초 단위로 설정하거나 (max-age)…

February 04, 2024
Web
함수형 프로그래밍 | 액션 리팩토링하기

본 글은 쏙쏙 들어오는 함수형 코딩 - 에릭 노먼드 저서를 읽고 학습한 내용을 정리한 글입니다. 들어가며 이전 글에서 액션과 계산, 데이터의 개념에 대해 알아보았다면, 이번 포스팅은 실습시간! 여러 예제로 상세히 알아본 개념을 활용해 리팩토링을 해보자. 함수의 입출력 액션에서 계산을 빼내기 위해선 우선 어떠한 함수를 액션 혹은 계산으로 구분할 줄 알아야한다. 이를 위해선 함수의 입출력에 대한 이해가 필요하다. 모든 함수에는 입력과 출력이 존재한다. 입력은 함수가 동작하기 위해 외부에서 유입되는 정보, 출력은 함수의 결과로 나오는 정보/또다른 동작을 뜻한다. 함수의 입출력은 아래와 같이 명시적이거나 암묵적인 속성을 가진다. 입력 출력 명시적 인자 리턴값 암묵적 인자 외 다른 입력 리턴값 외 다른 출력 여기서 기억해야 할 것은, 함수가 암묵적 입출력을 가지면 액션, 명시적 입출력을 가지면 계산이 된다. 또, 어떠한 함수가 액션을 포함한다면 그 함수 전체는 액션이 된다. 따라…

March 26, 2023
Web
함수형 프로그래밍 | 액션, 계산, 데이터

본 글은 쏙쏙 들어오는 함수형 코딩 - 에릭 노먼드 저서를 읽고 학습한 내용을 정리한 글입니다. 예제로 작성한 코드는 책을 옮겨 적은 것이 아니라 학습한 내용을 바탕으로 직접 작성하였습니다. 들어가며 기존에 함수형 프로그래밍이라 하면 순수 함수(결과값이 인자에만 의존)와 부수 효과(결과값을 리턴하는 것 외의 다른 동작)를 구분하고, 부수 효과를 피하며 순수 함수만을 합성해 프로그래밍하는 기법이란 기조가 강했다. 다만 부수 효과를 완전히 제거하고 순수 함수를 합성하는 것만으로 프로그래밍을 하기는 다소 어렵다는 애매함이 존재했다. 예를 들어 특정한 리턴값이 존재하지 않는 부수 효과인 1) 전역 상태 수정이나 2) 무언가를 전송하는 동작을 하지 못한다면.. 🤯 프로그래밍하기에 분명한 어려움이 있다. 해당 서적에서는 함수형 프로그래밍을 액션, 계산, 데이터 3가지의 개념으로 프로그래밍하는 것이라 재정의하고 있다. 에릭 노먼드가 설명하는 함수형 프로그래밍을 이해하기 위해 이 핵심 개념들…

March 12, 2023
Web
JWT(JSON Web Token), 등장 배경부터 인증 방식까지

들어가며 프로젝트를 진행할 때 JWT를 활용한 인증 방식으로 로그인을 구현한 적이 있다. 백엔드 개발자분과 협업을 하며 key값을 맞춰보고, 인증이 완료되었다고 기뻐하던 추억은 선명하지만.. JWT가 무엇인가란 질문에 자신있게 대답할 수 없었다. 추억속의 JWT를 꺼내 등장 배경부터 인증 프로세스, 장단점까지 알아보자. JWT의 등장배경 JWT가 무엇이고 어떤 형태로 사용되는지도 중요하지만, 먼저 그 배경을 알아야 어떤 장점과 특징을 가지고 있는지 제대로 이해할 수 있다. 그렇다면 JWT는 어떻게 등장하게 되었을까? 이는 HTTP의 특징과 연관된다. HTTP의 특징 HTTP는 (클라이언트의 요청이 처리되면 연결이 끊어짐), (서버가 클라이언트의 이전 상태를 저장하지 않음)라는 특징을 가지고 있어 인증이 필요한 페이지에 접근할 경우 서버는 클라이언트가 누구인지 매번 확인해야했다. 예를 들어 쇼핑몰에서 로그인을 하고 마음에 드는 제품을 장바구니에 담을 때마다 다시 로그인을 …

June 19, 2022
Web