Webview Cache Settings

Park.Dyel·2020년 2월 25일
0

App

목록 보기
1/2

현재 속해있는 개발팀에서는 WebView를 통해 Web Service를 연결하여 앱을 개발하는 방향을 가지고 있다. Native 기능이 필요한 부분은 가능한 모든 것이 제어가능하도록 API로 WebView에 제공한다.

저는 개발팀 내에서도 앱 개발에 대한 지식이 부족하여 앱 관련된 작업을 하지 않는데, 담당하고 있는 프로젝트에는 일반 사용자용 앱이 포함되어 있다.

App을 위한 Web Service 개발을 마치고 Play Store와 App Store 앱을 등록하고 나니, 미처 발견하지 못한 문제를 발견했다. Wer Server(CloudFront-S3)에서 컨텐츠를 새로 발행해도, 앱 자체의 캐쉬 때문에 사용자의 앱에서는 갱신이 되지 않는 것이다.

왠지 흔히 제공되는 기능일 것이라 생각하고, 찾아보니 Android에서는 WebView.getSettings().setCacheMode(flag)을 통해 설정할 수 있다고 판단했다.

Android

setCacheMode에 사용할 수 있는 플래그는 친절하게 공식 홈페이지에 설명되어 있고, 그중 원하는 동작은 Web Server읭 header의 Cache 정책을 따르는 설정이었다.

다만 살펴보던 중 설명이 정확히 이해되지 않아 정리차원에서 아래 내용을 긁어왔다.

### LOAD_DEFAULT
Default cache usage mode. If the navigation type doesn't impose any specific behavior, use cached resources when they are available and not expired, otherwise load resources from the network. Use with setCacheMode(int).

Constant Value: -1 (0xffffffff)

다만 이 설명중 not expired 의 기준이 무엇인지 이해가 되지 않았다. 다만 몇번의 테스트를 했을 때 LOAD_DEFAULT가 contents의 Server expired 설정을 따르는 것으로 추측된다. 다른 플래그 중 NO_CACHED도 고려했었지만 가능한 서버에서 제어 가능하길 원했기 때문에 LOAD_DEFAULT를 설정하였다.

iOS

하지만 생각외로 iOS에서는 원하는 자료를 찾지 못했고, 이것저것 테스트 해보기에는 맥OS를 가지고 있지 않았다. 해킨토시를 만들어볼까 했는데 지금도 충분히 용량이 부족하다.

결국 iOS에서는 모든 컨텐츠를 날리도록 코드를 작성했고, 결코 좋은 해결방법은 아니라고 생각되었지만 다른 사람의 PC를 빌려서 테스트 하는것도 용이한 상황은 아니었다. 하지만 content 중에 index.html 만 파일을 날리도록 좀 더 시간을 가지고 코딩을 하지 못한 것은 아쉽다.

profile
ㄱH발자

0개의 댓글