2016-04-25 23 views
5

में स्थिर संसाधनों के लिए setCachePeriod सेट करें, मैं वसंत बूट का उपयोग कर रहा हूं, और /static को जेएस और सीएसएस जैसे स्थैतिक संसाधनों के रूप में कार्य किया जाता है, अब तक इतना अच्छा है, जबकि मैं इन फ़ाइलों के कैश हेडर को सेट करना चाहता हूं, इसलिए मैंने कोशिश की इस:स्प्रिंग बूट

@Configuration 
public class BaseMvcConfig extends WebMvcConfigurerAdapter { 
    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/").setCachePeriod(24 * 3600 * 365); 
    } 
} 

हालांकि उसके बाद, आवेदन /static फ़ोल्डर से कुछ भी काम नहीं कर सकते।

समस्या क्या है?

उत्तर

9

मेरी राय में, डिफ़ॉल्ट बूट संसाधन हैंडलर की कैश अवधि सेट करने के लिए spring.resources.cache-period प्रॉपर्टी का उपयोग करना बेहतर है। तो अपने application.properties को निम्नलिखित जोड़ें:

spring.resources.cache-period = 31536000 

और BaseMvcConfig कॉन्फ़िग फ़ाइल को हटा दें।

+0

बस की कोशिश की है कि, फ़ाइलें परोसा जा सकता है, जबकि रिजॉन्स में कोई 'कैश' संबंधित हेडर जोड़े नहीं जाते हैं। – hguser

+0

मेरा 'कैश-कंट्रोल: अधिकतम आयु = 31536000' जोड़ रहा है। आप जिस स्प्रिंग बूट का उपयोग कर रहे हैं उसका कौन सा संस्करण उपयोग कर रहे हैं? यदि आपके पास कोई अन्य कॉन्फ़िगरेशन है तो उन्हें प्रश्न पर पोस्ट करें .. –

+0

स्प्रिंग डिफ़ॉल्ट कॉन्फ़िगरेशन के साथ, यदि आप अपनी फ़ाइल को 'classpath:/static/all.css' में सहेजते हैं, तो आप इसे http: // localhost: 8080/all.css'। यदि आप उस जावा कॉन्फ़िगर का उपयोग कर रहे हैं, तो आपको अपना अनुरोध 'http: // localhost: 8080/static/all.css' पर भेजना चाहिए। –

0

आप नियंत्रकों और स्थैतिक सामग्री के लिए सेटअप कैश के लिए वसंत सुरक्षा का उपयोग करना चाहते हैं तो आप application.properties में अपने WebSecurityConfigurerAdapter में अपवाद और सेट कैश अवधि कॉन्फ़िगर करने के लिए चाहते हो सकता है:

@Override 
public void configure(WebSecurity web) throws Exception { 
    web.ignoring().antMatchers("/js/**", "/css/**"); 
} 

#1 week cache 
spring.resources.cache-period = 604800