2014-11-18 4 views
1

최근 Android 프로젝트를 인수했습니다. 우리는 동기화 프로세스의 속도를 높이려고합니다. 이는 현재 코드입니다 : 내가 코드를 작성하지 않은okroid를 사용할 때 안드로이드가 http.keepalive false가 필요합니다.

System.setProperty("http.keepAlive", "false"); 

, 그래서 난 정말이 코드가 추가 된 이유를 알고 있지만 일 일부 인터넷 검색을 살아야하고 연결 작업을 유지하기 위해 필요한 것 같습니다하지 않습니다

HttpUrlConnection.openConnection fails second time

우리가 true로 설정

http://android-developers.blogspot.com/2011/09/androids-http-clients.html

은 동기화 과정은 실질적으로 속도,하지만 난 true로 설정하고 결과에 괜찮은 아이디어를 가지고 있지 싶지 않아요. http.keepAlive를 false로 설정해야 할 필요가 있는지 알 수 있습니까? 그렇다면 모든 Android 기기에서 사용할 수 있습니까? 더 이상 중요하지 않은 API 수준이 있습니까?

코드 기록을 살펴보면 http://square.github.io/okhttp/이 통합 된 곳을 확인했습니다. OkHTTP를 사용할 때 여전히이 설정을 false로 유지해야합니까?

감사합니다.

답변

1

아무런 문제없이 true으로 변경할 수 있습니다. http.keepAlive은 클라이언트에게 무언가를 할 때마다 연결을 다시 협상하는 것이 아니라 서버에 대한 연결을 계속 열어 둘 수 있음을 알려줍니다. 그것을 가능하게하는 데 어떠한 결과도 있어서는 안됩니다. 적어도, 제 경험에는 없습니다.

+0

링크 중 일부는 후속 연결 및 통화에 도움이되도록 언급 한 내용을 게시했습니다. 더 이상 필요하지 않니? – Josh

+0

연결된 StackExchange 질문에서 해당 사용자는 기본적으로 해결 방법으로 활성 유지를 비활성화합니다. 웹상의 대부분의 HTTP 연결은 활성화 된 상태로 유지됩니다. 연결하려는 서버가 지원하는 경우 (속도 향상이 필요한 경우에 필요함), 아무런 문제가 없어야합니다. Keep alive는 기본값이 'true'이므로 대부분의 사람들은 불량한 서버 구성에 대한 회피책으로 참조 행을 추가합니다. – IAmTheSquidward

+1

나는 프리 - 프 로요 장치에만 이것을 권장했다. 핵무기. http://android-developers.blogspot.ca/2011/09/androids-http-clients.html –

1

이 질문은 다소 오래되었지만 단순히 그 라인을 비활성화하는 것이 항상 완벽하게 안전하지는 않다는 점을 지적하고자합니다. 일부 개발자가 이렇게하는 이유는 클라이언트가 응답에서 Content-Length 헤더를 올바르게 설정하지 않은 서버와 대화하고 있기 때문입니다.

헤더의 값이 서버가 보내는 실제 바이트 수보다 작은 경우 추가 바이트가 다음 요청에 대한 응답의 첫 번째 바이트로 포함되어 해당 응답이 유효하지 않을 수 있습니다.

keep-alive를 비활성화하면 각 요청이 자체 포함되어 한 응답의 오류가 다른 것에 영향을 미치지 않도록 할 수 있습니다.