我有一個servlet將字節寫入其輸出流。內容的大小可能很大。我想阻止servlet做任何緩衝。 防止響應緩衝的最佳方法是什麼?我不想在ServletOutputStream上自己調用flush()或close(),因爲我認爲servlet容器應該爲我做這件事。 在這種情況下,如果servlet調用flush()和close()並且httpclient尚未讀取字節,則字節駐留在何處。如何防止servlet緩存響應內容
1
A
回答
2
每個servlet容器都提供了HttpServletRequest和HttpServletResponse實現的幕後實現,這意味着您不知道一個容器內的支持impl緩衝寫入,而另一個容器不支持impl。這就是說,緩衝將被限制在一個小的多KB大小(如果它已經完成),所以你可以簡單地將()重複寫到輸出流而不用擔心內存。 impl會將這些字節流式傳輸到網絡連接,通過網絡連接到客戶端,網絡硬件,操作系統和客戶端代碼的作用是緩衝並讀取所有內容。
TCP將自動處理ACK並重新發送任何丟失的數據。
總之,你不需要擔心客戶端「趕上」;只需寫出您的數據,並將客戶端上的所有內容與TCP結合起來就可以處理數據。
相關問題
- 1. 如何防止python urllib3緩存響應
- 2. 如何防止Alfresco webscript響應緩存
- 3. 防止緩存ajax響應
- 4. 防止200(緩存)響應
- 5. 如何防止緩存網站內容?
- 6. 防止動態(php)內容的緩存
- 7. 如何阻止Safari緩存我的Servlet響應?
- 8. OpenCL:防止內核緩存
- 9. 如何防止內容在Firefox中從後退緩存顯示?
- 10. 如何防止Ajax緩存
- 11. Microsoft.XMLHTTP - 如何防止緩存?
- 12. 如何停止org.springframework.web.client.RestTemplate緩存響應?
- 13. 如何防止Servlet被緩存的結果?
- 14. 如何防止servlet轉義響應中的雙引號
- 15. 如何防止JavaScript書寫的內容被存儲在Firefox的wyciwyg緩存中?
- 16. JMX:如何防止servlet容器中的類加載器內存泄漏?
- 17. 防止web2py緩存?
- 18. 防止緩存Ajax
- 19. crossdomain.xml防止緩存
- 20. 防止HTML緩存
- 21. 防止Javascript緩存
- 22. 防止gettext緩存
- 23. 如何防止Eclipselink使用緩存消耗所有內存?
- 24. 如何防止LRU緩存中的內存不足錯誤android
- 25. 防止將scrapy響應添加到緩存中
- 26. 什麼可以防止webview的內容被緩存?
- 27. 如何緩存JSON響應?
- 28. 如何緩存expressjs響應
- 29. 如何防止XMLHttpRequest緩衝整個響應
- 30. 如何防止APC緩存碎片
謝謝..我仍然想知道刷新後的字節在哪裏被調用..它們在客戶端緩衝嗎? – subodh 2012-03-07 21:02:08
它們被推送到您的操作系統的網絡棧,所以現在您的操作系統的TCP/IP網絡代碼負責確保客戶端接收所有數據(您的發送緩衝區)。您的網絡硬件本身也有緩衝功能,然後在所有這些級別的客戶端緩衝。當我們編寫網絡代碼時,智能網絡協議設計使我們忽略了這一複雜程度。 – 2012-03-07 21:04:55
真棒..所以我想答案是ServletOutputstream上的close()和flush()是確保服務器上沒有緩衝發生所需的全部內容,並且大多數Servlet容器都會關閉併爲您刷新,這樣您甚至不需要需要自己做。非常感謝! – subodh 2012-03-07 21:09:20