मैं अपने Google ऐप इंजन वेबसाइट पर JSP फ़ाइल के लिए कैश को अक्षम करना चाहता हूं।
मेरे पास यह है:
<%
// Set to expire far in the past.
response.setHeader("Expires", "Sat, 6 May 1995 12:00:00 GMT");
// Set standard HTTP/1.1 no-cache headers.
response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
// Set IE extended HTTP/1.1 no-cache headers (use addHeader).
response.addHeader("Cache-Control", "post-check=0, pre-check=0");
// Set standard HTTP/1.0 no-cache header.
response.setHeader("Pragma", "no-cache");
%>
लेकिन जेएसपी अभी भी कैश में है। मुझे JSP कोड को पुनः लोड करने के लिए उपयोगकर्ता सत्र को मारना और फिर से लॉगिन करना होगा।
मैं एप इंजन JSP के लिए कैश को कैसे निष्क्रिय कर सकता हूं?
उत्तर:
जवाब के लिए 3 № 1यह उस बिंदु पर हो सकता है बहुत देर प्रतिक्रिया हेडर बदलने के लिए। उन्हें बस नजरअंदाज कर दिया जाएगा। आप HTTP डीबगर टूल जैसे प्रतिक्रिया हेडर की उपस्थिति को सत्यापित कर सकते हैं Firebug.
जेएसपी में, आपको यह सुनिश्चित करने की आवश्यकता है कि वे सेट हैं से पहले प्रतिक्रिया प्रतिबद्ध है (अर्थात सभी हेडर पहले ही भेजे जा चुके हैं; आप बाद में दूसरा हेडर नहीं भेज सकते)। अर्थात। सुनिश्चित करें कि वे JSP फ़ाइल के बहुत ऊपर हैं और कोई भी टेम्प्लेट टेक्स्ट उस टुकड़े से पहले नहीं है स्क्रिप्टलेट। टेम्प्लेट पाठ प्रतिक्रिया का एक कारण हो सकता है। हालाँकि, सामान्य अभ्यास का उपयोग करना है Filter
इसके लिए।
लागू javax.servlet.Filter
जिसमें doFilter()
विधि इस प्रकार दिखती है:
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setHeader("Cache-Control", "no-cache", "no-store", "must-revalidate"); // HTTP 1.1
httpResponse.setHeader("Pragma", "no-cache"); // HTTP 1.0
httpResponse.setDateHeader("Expires", 0); // Proxies.
chain.doFilter(request, response);
इसमें मैप दें web.xml
एक पर url-pattern
का *.jsp
और यह काम करना चाहिए।