सामग्री के कैश होने के बाद मुझे सर्वर से सभी अनुरोधों को एकमुश्त रोकने के लिए क्या हेडर भेजना चाहिए?
हमारे पास एक बहुत ही उच्च विलंबता सर्वर (Sigh, VMWare) है, यहां तक HEAD
कि सर्वर को अनुरोध भेजने पर + 40ms लगते हैं।
वर्तमान में ये हेडर भेजे / प्राप्त किए जा रहे हैं;
पहला निवेदन
ग्राहक भेजता है;
GET http://dugong:8080/Rvi24mYJkxFRGNzq73PPvgWGh1j/IMG_2071.jpg HTTP/1.1
Host: dugong:8080
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:9.0) Gecko/20100101 Firefox/9.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Pragma: no-cache, no-cache, no-cache
Cache-Control: no-cache, no-cache, no-cache
सर्वर प्रतिक्रिया करता है;
HTTP/1.1 200 OK
Server: nginx/1.0.11
Date: Wed, 01 Feb 2012 14:51:51 GMT
Content-Type: text/plain
Vary: Accept-Encoding
Last-Modified: Tue, 31 Jan 2012 10:45:11 GMT
Content-Length: 14
Expires: Thu, 31 Jan 2013 14:51:51 GMT
Cache-Control: max-age=31536000
इसलिए यह भविष्य में 365 दिनों के लिए सेट Cache-Control
और Expires
हेडर भेजता है । दुर्भाग्य से दूसरे रिफ्रेश पर यह If-Modified-Since
हेडर के साथ फिर से ऑब्जेक्ट का अनुरोध करता है ।
दूसरा निवेदन
GET http://dugong:8080/Rvi24mYJkxFRGNzq73PPvgWGh1j/IMG_2071.jpg HTTP/1.1
Host: dugong:8080
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:9.0) Gecko/20100101 Firefox/9.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
If-Modified-Since: Tue, 31 Jan 2012 10:45:11 GMT
Cache-Control: max-age=0
प्रतिक्रिया;
HTTP/1.1 304 Not Modified
Server: nginx/1.0.11
Date: Wed, 01 Feb 2012 14:58:00 GMT
Vary: Accept-Encoding
Expires: Thu, 31 Jan 2013 14:58:00 GMT
Cache-Control: max-age=31536000
दुर्भाग्य से मूर्खतापूर्ण पुराने प्रॉक्सी सॉफ्टवेयर के कारण हम उपयोग नहीं कर सकते हैं Keep-Alive
, या किसी अन्य सर्वर / प्रॉक्सी को आवेदन के सामने नहीं रख सकते हैं । हम सर्वर के प्रदर्शन में सुधार नहीं कर सकते हैं और नेटवर्क विलंबता को कम कर सकते हैं। मैं यह पता लगाने की कोशिश कर रहा हूं कि 301 अनुरोधों से छुटकारा पाने के लिए हम क्या हेडर भेज सकते हैं। मैंने ETags का उपयोग करने की कोशिश की है, लेकिन इससे कोई फर्क नहीं पड़ता, यह अभी भी एक If-modified-since
हेडर भेजता है । मैंने Last-Modified
हेडर को हटाने की भी कोशिश की है, लेकिन यह बिना किसी कैशिंग के मानक जीईटी अनुरोध का कारण बनता है (लॉग्स की जांच की, सर्वर अभी भी अनुरोध प्राप्त कर रहा है)।
ग्राहक फ़ायरफ़ॉक्स (अधिकतर), IE 7, 8 और (कुछ) 9, क्रोम और सफारी का मिश्रण हैं, लेकिन यह व्यवहार परीक्षण किए गए सभी ब्राउज़रों में दिखाई दे रहा है।
टी एल; डॉ;
भयानक नेटवर्क, जो हेडर मुझे ग्राहकों को यह बताने के लिए भेजने चाहिए कि कभी भीIf-modified-since
सर्वर को अपने कैश को सत्यापित करने के लिए अनुरोध न भेजें , और Expires
हेडर पूरा होने तक सामग्री को कैश किया जाए ?
मैं शायद कुछ स्पष्ट याद कर रहा हूं, लेकिन मैं जो कुछ भी कोशिश करता हूं, वही परिणाम देता है।
हमारे पास एक NGINX सर्वर है, जो हमारे एप्लिकेशन सर्वर के सामने बैठा है, इसलिए मैं किसी भी हेडर को जोड़ सकता हूं / हटा सकता हूं। हमारा प्रॉक्सी, Keep-Alive का समर्थन नहीं करता है और उनके नेटवर्क के प्रदर्शन को बेहतर बनाने का कोई तरीका नहीं है। भयानक सॉफ्टवेयर डिज़ाइन के कारण वेब ऐप प्रत्येक पृष्ठ लोड (हाँ, एंटरप्राइज़ सॉफ़्टवेयर बेकार) पर प्रति वस्तु ~ 40-50ms की विलंबता के साथ +100 संसाधनों को लोड करता है।
text/plain
?