본문으로 바로가기

[Android]WEB-안드로이드 이미지 캐시문제

category Android 2018. 5. 24. 15:41

안드로이드폰에서 url 로 이미지 경로를 가져와 화면에 띄울때 이전 이미지(이미지 수정전)가 뜨는문제..


이상하게 아이폰은 새로 수정된 이미지가 뜨는데 안드로이드만 수정전 이미지를 띄우는것이다


안드로이드에서 이미지 캐시문제가 있는듯하여 찾아보다 해결.


url로 이미지의 경로를 가져올때 경로뒤에 현재시간을 붙여준다. 그럼 같은 파일이라도 캐시문제가 발생하지않는다.

'http://localhost:9090/Upload/ship/' + confirmation.data.IMG_SIGN_FILE.replace("jpg", "png") + "?" +new Date().getTime()

처럼 스크립트에서 경로뒤에 "?" + new Data().getTime(); 를 붙여 요청하면된다.

"http://localhost:9090/Upload/ship/A00020180316002000149.png?1527143543857"

그럼 이렇게 이미지경로뒤에 ?시간이 붙어 같은 파일이지만 캐시로 인식하지않아 수정된 파일을 사용한다.



이미지 뿐만아니라 데이터를 수정뒤에 다시 조회하면 수정된 값이 조회가 안될경우에도 같은 방법을 사용하면됨.

(데이터베이스에는 수정된값이 들어가있음)


ajax 요청시.

$.get( "/api/getRest?restUrl=" + getUrl("Request") + "&header=" + encodedJSON(headerInfo()) + "&body=" + encodedJSON(bodyObj) + "&_=" +new Date().getTime(), function( data ) {
		if(JSON.parse(data).resultCode == "2000") {
			logOutAlert(JSON.parse(data).resultMessage);
		} else if(JSON.parse(data).resultCode != "1000" && JSON.parse(data).resultCode != "2000") {
			bootalert(JSON.parse(data).resultMessage);
			return false
		}

이런식으로 뒤에 시간을 붙여서 요청한다.



이런 캐시문제가 안드로이드폰에서 발생하는것같다.


캐시문제를 해결 할 수 있는 다른 방법인 메타태그설정, ajax 일경우 post통신으로 바꾼다거나 cache : false 를 준다거나 방법이 있지만 경로뒤에 ?시간 을 붙이는게 확실한것같다. 


경우에따라 위방법중 하나를 택해 사용해보면 될듯하다.