ऐप इंजन NO CACHE JSP - google-app-engine, jsp

मैं अपने 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 और यह काम करना चाहिए।

यह भी देखें: