나는 다운로드가 시작되는 시점에 콘텐츠 길이가 있습니다. 그래서 내가 얼마나 많은 바이트를 요청해야하는지 압니다. 1024 바이트 청크로 다운로드합니다. 마지막 청크에서 남은 바이트 수를 요청합니다. 나는 읽기 기능을 사용하고 있습니다. 하지만 마지막 청크는 도착하는 데 많은 시간이 걸립니다. 정상입니까?HTTP 다운로드의 마지막 청크가 실제로 느린 이유는 무엇입니까?
답변
감사합니다. 문제를 발견했습니다. 내 코드는 응용 프로그램 수준 버퍼를 사용하므로 마지막 청크는 다운로드하는 데 오랜 시간이 걸립니다. 나는 Bryant의 저서에있는 강력한 io 함수를 사용하고 있습니다. 나는 그 코드를 약간의 시간 동안 연구했고 그것에 대해 잊어 버렸다. 나는 코드를 수정하고 코드에서 사용되는 버퍼링을 발견했다.
내가 HTTP/1.1 사용하던 만들고 있었다 또 다른 실수. HTTP 1.0을 사용하면 서버에서 데이터를 전송 한 후 연결을 닫습니다. 그래서 문제가 해결되었습니다.
HTTP/1.1에서 요청 헤더'Keep-Alive : close'를 사용할 수 있습니다. – Piskvor
어쩌면 최종 청크가 버퍼를 플러시 할 정도로 크지 않을 수도 있습니다.
fd를 플러시하는 방법을 확인하고 마지막 청크를 보낸 후 수동으로 수행 할 수 있습니다.
나는 당신의 요점을 얻을 수 없었다. –
1024 바이트를 보낼 때 파일 디스크립터 내부 버퍼가 단독으로 플러시 될 정도로 커 보인다. 콘텐츠 크기가 작 으면 fd는 시간 초과를 기다린 다음 플러시하거나 닫을 수 있습니다. –
마지막 청크에 필요한만큼 많은 바이트를 요청하고 있는데 1024가 아닌 것입니다. –
아니요. 내 생각에 서버가 flush()
에 대한 호출을 잃어 버렸기 때문에 시간 초과가 될 때까지 출력이 일부 버퍼에서 멈 춥니 다 (서버가 플러시 될 때까지).
하지만 내 웹 브라우저도 페이지를 다운로드하는 데 시간이 걸릴 것입니다. 그것은 사실이 아닙니다. 브라우저가 페이지를 즉시로드합니다. 내 프로그램은 대부분의 시간 마지막 덩어리를 기다리는 동안 약 8 초 걸립니다. –
브라우저는 지금까지 전송 된 내용을 기반으로 작동하기 시작합니다. 예를 들어 PHP에서 웹 페이지의'head'를 쓴 후에'flush'를 호출하면 브라우저가'head'의 내용을로드하기 시작할 수 있으므로 나머지 페이지는 서체/로드. 브라우저는 와이어를 통해 마크 업을 얻 자마자 페이지를 구문 분석/렌더링하려고 시도합니다. 브라우저에서 바로 렌더링하는 것을 볼 수 있습니다. – geowa4
확인 브라우저를 잊어 버리십시오. 나는 텔넷과 같은 행동을 보았다. –
- 1. ODBC가 느린 이유는 무엇입니까?
- 2. Direct3DCreate9가 느린 이유는 무엇입니까?
- 3. Maven이 우분투에서 느린 이유는 무엇입니까?
- 4. NSURLConnection의 속도가 느린 이유는 무엇입니까?
- 5. 맞춤 배열이 바닐라 버전보다 느린 이유는 무엇입니까?
- 6. PageSettings.PrintableArea의 속도가 느린 이유는 무엇입니까?
- 7. 구성이 MSYS에서 느린 이유는 무엇입니까?
- 8. DrawReversibleFrame이 너무 느린 이유는 무엇입니까?
- 9. iframe이 너무 느린 이유는 무엇입니까?
- 10. QTreeView에서 선택이 느린 이유는 무엇입니까?
- 11. 폭포가 너무 느린 이유는 무엇입니까?
- 12. TestComplete의 속도가 느린 이유는 무엇입니까?
- 13. IronPython 시작 시간이 너무 느린 이유는 무엇입니까?
- 14. iframe 업로드가 너무 느린 이유는 무엇입니까?
- 15. Glassfish 관리 콘솔의 속도가 느린 이유는 무엇입니까?
- 16. membase 서버가 응답 속도가 느린 이유는 무엇입니까?
- 17. PHP에서 느린 HTTP POST 요청
- 18. EventMachine의 지연이 Ruby Thread보다 느린 이유는 무엇입니까?
- 19. 보고 서비스가 쿼리보다 훨씬 느린 이유는 무엇입니까?
- 20. 은 실제로 그 쇼케이스만큼 느린 smartGWT입니까?
- 21. HTTP 청크 : 모든 청크가 연속적으로 전송되고 중단되지 않습니까?
- 22. 페이지 렌더링 속도가 느린 이유는 무엇입니까?
- 23. C#이 루프가 너무 느린 이유는 무엇입니까?
- 24. CollectionViewSource.SortDescriptions를 사용하여 정렬하는 속도가 느린 이유는 무엇입니까?
- 25. MySQL에 연결할 때 Java가 느린 이유는 무엇입니까?
- 26. Windows에서 PostgreSQL의 속도가 느린 이유는 무엇입니까?
- 27. IE7에서 jQuery Ajax의 속도가 느린 이유는 무엇입니까?
- 28. 일시적으로 느린 MySQL 테이블 - 이유는 무엇입니까?
- 29. PHP에서 json_encode가 serialize하는 것보다 느린 이유는 무엇입니까?
- 30. "연귀"관절이 다른 관절보다 느린 이유는 무엇입니까?
브라우저와 텔넷이 제대로 처리하지만 클라이언트가 그렇지 않은 경우 관련 코드 스 니펫을 게시하지 마십시오. – Duck