Interceptor 3

Coil 인터셉터를 활용한 이미지 로딩 최적화 방법

Coil의 이미지 파이프라인은 아래 5가지의 메인 파트로 이루어져 있는데, Interceptor는 그 중 첫번째로 실행되는 녀석이다. Interceptor -> Mapper > Keyer -> Fetcher -> Decoder 커스텀 Interceptor를 이용하면 일종의 캐시 레이어(Cache Layer)를 만들 수 있다. 요청을 가로채서 요청 파라미터를 수정하거나...HTTP Request를 했지만 휴대폰 내에 파일이 있다면 File로 돌려버리거나 말이다. 또, 앱에서 정의한 커스텀 스키마로 이미지를 불러오는 것도 가능해진다. 어찌되었건 지금 간단히 예시로 볼 것은 Unsplash 이미지를 불러올때 이미지 사이즈를 최적화 시켜주는 Interceptor다. (Github에 많이 떠돌아다니는 코드다 ㅋㅋ..

[안드로이드] 특정 시간 내 중복 Request를 막는 OkHTTP Interceptor 구현하기

특정시간 안에 보낸 동일한 Request에 대해서 서버에 요청하지 않고, 이전에 받은 응답값을 그대로 내려주는 Interceptor를 구현해보았다. Response Body를 어떻게 재사용할 것인가 고민을 많이 했는데, ByteArray 형태로 읽어두고 중복된 요청일때 ResponseBody로 만들어주는 방법을 사용해보았다. 이렇게 짧은 시간안에 연속적으로 요청을하더라도, 500ms 이후에만 새로 요청을 하게된다. 개발중인 앱의 Request Method가 전부 POST이기때문에, Request body까지 읽어서 hashing을 하고있는데, 그럴 필요까지 없으신분들은 Request URL 자체를 hash 값으로 잡아도 무방할 것이다. 혹시 유용했다면 Star를~! HTML 삽입 미리보기할 수 없는 소스

[안드로이드] Retrofit2 오프라인 캐시 구현하기 (Offline cache interceptor)

캐싱의 이점 서버 대역폭 낭비를 줄일 수 있다. 응답을 받기까지 기다리는 시간을 줄일 수 있다. 서버 트래픽을 줄여준다. Cache-Control이란 무엇인가? Cache-Control은 브라우저단의 캐싱 정책을 정의하는 HTTP 캐시 헤더다. 클라이언트가 서버에게 요청을 호출하면, 브라우저는 자원 사본을 캐싱 하여 다음 번 접근 시에 서버에 처음부터 다시 파일을 요청하는 일이 없도록 할 수 있다. Cache-Control을 통해서 캐시 정책을 세울 수 있다. 자주 쓰는 Cache-Control Directives Directives를 한국말로 뭘로 하면좋을까.. 지시사항? 아무튼 그걸 살펴보려하는데, 여러 Directive들은 콤마(,)로 구분 가능하다. Directive를 이용하여 응답(Respons..