2011-01-11 21 views
6

etiketi ve mvc kullanarak: docs anlatıldığı gibi statik içerik sunmaya için kaynak: http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-static-resourcesBahar MVC mvc ile önbelleğe alma izin ver: kaynaklar benim webapp kökünde Bahar 3 MVC Dispatcher sunucu uygulamasını konfigüre ettik

Google’ın Chrome tarayıcı Denetimi, kaynakların açık bir şekilde önbelleğe alınamadığını söylüyor.

Cache-Control:max-age=31556926, must-revalidate 
Content-Length:1022 
Content-Type:image/png 
Date:Tue, 11 Jan 2011 00:20:07 GMT 
Expires:Wed, 11 Jan 2012 06:08:53 GMT 
Last-Modified:Mon, 29 Nov 2010 19:53:48 GMT 

Yani, kaynağın önbelleğe alınabilir kılmak için ne gerekiyor: Burada aynı tarayıcı diyor başlıkları tepki ile gönderilir var?

+0

Eğer mvc üzerinde önbellek dönem özelliğini ayarlamak vermedi:

"must-revalidate" değeri

şimdi varsayılan olarak devre dışıdır ve hatta böyle bir şey yazabilirim? – DwB

+0

Evet ve maksimum önbellek denetiminde ayarlanan değeri görebilirsiniz. Bu gece Spring'in ETag filtresini kuracağım ve bunun bu sorunu çözüp çözmediğine bakacağım. – digitaljoel

+0

ETag filtresi sorunu çözdü mü? Bendede aynı sorun var. – les2

cevap

1

Belki org.springframework.web.servlet.mvc.WebContentInterceptor yardımcı olabilir? Sadece önleyicilerin listesine eklemek:

<mvc:interceptors> 
    <bean class="org.springframework.web.servlet.mvc.WebContentInterceptor"> 
     <property name="cacheMappings"> 
      <props> 
       <prop key="/ajax/promoCodes">300</prop> 
       <prop key="/ajax/options">0</prop> 
      </props> 
     </property> 
    </bean> 
</mvc:interceptors> 
+0

javadoc bu sınıf için aradığım şey gibi görünmüyor. – digitaljoel

3

Bahar Framework 4.2, this is now fixed with more flexible Cache-Control header values itibariyle. Başvurunuz yapılandırma dosyasında kaynaklar girişini:

@Configuration 
@EnableWebMvc 
public class WebConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     registry.addResourceHandler("/resources/**") 
       .addResourceLocations("/static/") 
       .setCacheControl(CacheControl.maxAge(30, TimeUnit.DAYS).cachePublic()); 
    } 

} 
+0

4.2'den önceki versiyonda aynısını yapmanın bir yolu var mı? –

+0

Bildiğim kadarıyla - bu noktada, 4.3'e yükseltmek, Spring 3.x'in birkaç gün içinde EOL olması ve 4.3'ün yeni LTS versiyonudur. –

+0

Cevabınız için teşekkür ederim, baharı yükseltiyorum :) –