Spring4.x官方参考文档中文版——第21章 Web MVC框架(28)

21.14 HTTP缓存支持

        一个好的HTTP缓存能够显著改善web应用及其客户端的体验。HTTP响应报头中的’Cache-Control’就是为其负责的。紧接这个报头后面可以有如’Last-Modified’和’ETag’这样的报头。

        ‘Cache-Control’这个HTTP响应报头会给私有缓存(如:浏览器)和公有缓存(如:代理服务器)提供关于怎样缓存这些HTTP响应的建议。

        mvc-config-static-resources(MVC静态资源配置):ETag(实体标签),是一个符合HTTP/1.1 web服务器的,用于判断在指定URL中是否有变化的内容。它也可以被看作是Last-Modified报头的继任者。当服务端返回带有Etag报头的响应时,客户端可以在随后含有If-None-Match报头的GET请求中使用这个报头。如果其内容没被改变,服务端会返回304:not Modified错误。

    本小节阐述了在Spring Web MVC应用中可以以此方式来配置HTTP缓存。

 

21.14.1 HTTP报头:Cache-Control

        Spring Web MVC可以支持在应用中,以各种各样的方式来配置”Cache_Control”。在RFC7234 Section 5.2.2完整阐述了这个报头和其可能的指令的同时,也有一些方法来把其应用到一些常见的情况中。

    Spring Web MVC在一些它的API中,使用一种配置规则:

setCachePeriod(int seconds):

  • n  如果是-1,则不会生成’Cache-Control’响应报头。
  • n  如果是0,会避免缓存,会使用’Cache-Control: no-store’这个指令。
  • n  如果这个值n大于0,缓存就会在指定响应中保持n秒,使用‘Cache-Control: max-age=n’这个指令。

        CacheContrl这个类可以使”Cache-Control”的指令生成时变得更加简单,还使开发者建立自己的HTTP缓存机制时更加方便。一旦这个类建立了,可以把其作为一个入参,在一些Spring Web MVC 的API中来使用它。

// 缓存一小时 - "Cache-Control: max-age=3600"
CacheControlccCacheOneHour = CacheControl.maxAge(1, TimeUnit.HOURS);
 
// 避免缓存 - "Cache-Control: no-store"
CacheControl ccNoStore =CacheControl.noStore();
 
// 在公有和私有缓存中储存10天,
// 公有缓存不能转为响应
//"Cache-Control: max-age=864000, public, no-transform"
CacheControl ccCustom =CacheControl.maxAge(10, TimeUnit.DAYS)
                                      .noTransform().cachePublic();


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值