java - setContentLength is set high -


जब setContentLength विधि का उपयोग उच्च लंबाई के साथ प्रतिक्रिया की लंबाई निर्धारित करने के लिए किया जाता है वास्तविक आकार के मुकाबले, कंटेनर को लंबाई की गणना के लिए स्वतः क्यों नहीं है

उदाहरण के लिए,

  स्ट्रिंग s = "हैलो"; बाइट [] बी = s.getBytes (); response.setContentLength (100); । Response.getOutputStream () लिखना (ख); response.flush ();  

जब मैं सर्वलेट को मारा, पृष्ठ को लोड करने में लगभग आधा मिनट लगता है, यह सामग्री लंबाई शीर्षलेख की वजह से है ..?

आवश्यकता क्या है ऐसी विधि के लिए?

यदि आप वापस लौटना चाहते हैं तो क्यों नहीं कंटेनर को प्रतिक्रिया की लंबाई की गणना करने के लिए बनाया जा सकता है? बड़ी सामग्रियों को यह पूरी तरह से पूर्ण प्रतिक्रिया लोड करने के लिए व्यावहारिक नहीं है और इसे एक बार में भेजना है, लेकिन इसे लोड करने और विखंडनों में भेजना है। चूंकि लंबाई प्रतिक्रिया की शुरुआत के हिस्से के रूप में भेजी जाती है, इसलिए कंटेनर को बाद में बदलने के लिए कोई रास्ता नहीं है।

इस मामले में आप कंटेनर को बताते हैं कि आपकी प्रतिक्रिया 100 बाइट्स है, आप पहले 5 बाइट्स (जो शीर्षक "सामग्री-लंबाई: 100" को भी भेजा जा सकता है) को चालू करता है, इसलिए अब प्राप्तकर्ता 95 बाइट्स की अपेक्षा रखता है।

अब, दूसरी तरफ, आपकी सामग्री 10 जीबी , तो आप पहले से ही स्मृति में सभी को लोड नहीं करना चाहेंगे, इसलिए कंटेनर आकार की गणना करेगा।


Comments

Popular posts from this blog

php - Select box validation (in laravel) -

pandas - Iterate on Groupby Object's fields -

Creating a sparse matrix in Matlab with a specified number of independent Bernoulli +-1 nonzero entries -